Perl API
NeTAMS ïðåäñòàâëÿåò ñîáîé äîñòàòî÷íî ãèáêèé èíñòðóìåíò ó÷åòà òðàôèêà è óñòàíîâêè íåêîòîðûõ îãðàíè÷åíèé íà ðàáîòó ïîëüçîâàòåëåé. Êðóã çàäà÷, êîòîðûå ìîæíî ðåøèòü ñ èñïîëüçîâàíèåì äàííîé ïðîãðàììû, ÷ðåçâû÷àéíî øèðîê, è ó êàæäîãî àäìèíèñòðàòîðà åñòü ñâîè ïîæåëàíèÿ ïî îðãàíèçàöèè ðàáîòû ïðîãðàììû è òîìó, êàê îíà âçàèìîäåéñòâóåò ñ ïîëüçîâàòåëÿìè. Äëÿ îáëåã÷åíèÿ çàäà÷è íàñòðîéêè è èñïîëüçîâàíèÿ NeTAMS ïîä âàøè êîíêðåòíûå çàäà÷è áûë ñîçäàí èíòåðôåéñ â âèäå ðÿäà ôóíêöèé, êîòîðûé ïîçâîëÿåò óïðàâëÿòü ïðîãðàììîé è ïîëó÷àòü îò íåå äàííûå èç âàøèõ íàïèñàííûõ ñàìîñòîÿòåëüíî Perl-ñêðèïòîâ è CGI-ïðîãðàìì.
Äëÿ ïðèìåíåíèÿ èíòåðôåéñà âû äîëæíû âêëþ÷èòü â íà÷àëî âàøåé ïðîãðàììû ñòðîêó:
require "netams_api.pl"
Âîò ñïèñîê ôóíêöèé, êîòîðûå îïðåäåëåíû â ýòîì èíòåðôåéñå:
- $result=netams_login($hostname, $port, $username, $password); - îñóùåñòâëÿåò ñîåäèíåíèå ñ ïðîãðàììîé, èñïîëüçóÿ óêàçàííûå ïàðàìåòðû. Åñëè $result íà÷èíàåòñÿ ñî ñëîâ "Welcome", òî ñîåäèíåíèå ïðîøëî óñïåøíî
- netams_send($command); - îòïðàâëÿåò êîìàíäó $command íà èñïîëíåíèå
- $result=netams_read(); - ñ÷èòûâàåò â ïåðåìåííóþ $result ðåçóëüòàò âûïîëíåíèÿ êîìàíäû
- $result=netams_readline(); - òî æå ñàìîå, íî ïðîãðàììà îæèäàåò âûâîäà ïðèçíàêà êîíöà ñòðîêè (ïåðåâîä ñòðîêè, "\n"). èñïîëüçîâàòü íå ðåêîìåíäóåòñÿ
- netams_logout(); - îñóùåñòâëÿåò ðàçðûâ ñîåäèíåíèÿ.
Âîò ñïèñîê èäóùèõ ñ ïðîãðàììîé ñêðèïòîâ, êîòîðûå ìîæíî ïðèìåíÿòü íà ïðàêòèêå èëè ðàññìàòðèâàòü êàê ïðèìåðû ïðîãðàììèðîâàíèÿ îáùåíèÿ ñ NeTAMS:
- netams_example.cgi - âûâîäèò ðåçóëüòàò âûïîëíåíèÿ êîìàíäû show version â âèäå cgi-ïðîãðàììû. ïîñëå íåáîëüøîé ìîäèôèêàöèè ïðåâðàùàåòñÿ â óòèëèòó êîìàíäíîé ñòðîêè.
- login.cgi - èíòåðôåéñ ê ñåðâèñó login.
- netams_graph.cgi - ïðîãðàììà, äèíàìè÷åñêè ñîçäàþùàÿ êàðòèíêè â ôîðìàòå PNG ñ ãðàôè÷åñêèì îòîáðàæåíèåì ñòàòèñòèêè äëÿ çàäàííîãî þíèòà è âñåõ åãî ïîëèòèê ó÷åòà, çà ïîñëåäíèå íåäåëþ èëè ìåñÿö. ïàðàìåòðû âûçîâà (ìåòîä GET):
unit=UNIT_NAME - îáÿçàòåëüíûé ïàðàìåòð, îïðåäåëÿåò èìÿ þíèòà, äëÿ êîòîðîãî áóäåò ðèñîâàòüñÿ êàðòèíêà
policy=POLICY_NAME - èìÿ ïîëèòèêè, êîòîðàÿ áóäåò îòîáðàæàòüñÿ. ïðè îòñóòñòâèè ïàðàìåòðà policy áóäóò îòðèñîâàíû âñå àêòèâíûå ïîëèòèêè.
prefix=PREFIX - áóêâà, îïðåäåëÿþùàÿ âðåìåííîé ïåðèîä ãðàôèêà, W (íåäåëÿ) èëè M (ìåñÿö) ñîîòâåòñòâåííî, ïî óìîë÷àíèþ =W
nolegend=FLAG - ïðè ëþáîì óñòàíîâëåííîì çíà÷åíèè çàïðåùàåò îòðèñîâêó ëåãåíäû ñ îòîáðàæåíèåì öâåòà, êîòîðûì áóäåò îòðèñîâûâàòüñÿ äàííûå î ïîëèòèêå.
Äàííûé ñêðèïò èñïîëüçóåò ìîäóëè GD.pm è áèáëèîòåêó libgd. Äëÿ FreeBSD âàì íàäî âûïîëíèòü ÷òî-òî âðîäå cd /usr/ports/graphics/p5-GD ; make install. Â òåêóùåì êàòàëîãå íåîáõîäèìî èìåòü ôàéë lucon.ttf, ýòî TrueType-øðèôò Lucida Console èç äèñòðèáóòèâà Windows XP.