Cisco IOS TCL skriptování – využití SMTP knihovny Bc. Petr Hanták (han377), Bc. Vít Klimenko (kli307)
Abstrakt: Úkolem tohoto projektu bylo zmapovat SMTP knihovnu pro odesílání emailových zpráv z Cisco směrovačů s využitím skriptovacího jazyka TCL. Využití této knihovny je demonstrováno v praktických příkladech zajišťující odeslání e-‐mailu na základě vyvolání událostí pomocí Cisco Embedded Event Manager (EEM). Klíčová slova: TCL, SMTP, EEM, Cisco, e-‐mail
1 Úvod .............................................................................................................................................................. 2 1.1 Cíl projektu ......................................................................................................................................................... 2 1.2 Předpoklady ....................................................................................................................................................... 2 1.2.1 Síťová topologie ............................................................................................................................................................. 2 1.2.2 Základní konfigurace směrovače ............................................................................................................................ 2 1.2.3 Doplňkový software ..................................................................................................................................................... 3 2 Implementace ............................................................................................................................................ 3 2.1 Registrace skriptu k EEM ............................................................................................................................... 3 2.2 Nahrání a registrace skriptů ......................................................................................................................... 3 2.3 Formát emailové zprávy ................................................................................................................................. 4 2.4 Ukázkové skripty .............................................................................................................................................. 4 2.4.1 Inicializační proměnné ................................................................................................................................................ 4 2.4.2 Popsání důležitých částí skriptu sendmail.tcl ................................................................................................... 4 3 Závěrečné zhodnocení ............................................................................................................................ 5 Reference ........................................................................................................................................................... 5 Elektronické zdroje ..................................................................................................................................................... 5
prosinec 2010
1
1 Úvod 1.1 Cíl projektu V ukázkových příkladech si ukážeme praktické využití SMTP knihovny, která je integrována ve skriptovací prostředí TCL v operačním systému IOS na Cisco směrovačích. V projektu jsou zahrnuty dva ukázkové skripty, které demonstrují odesílání emailových zpráv z jakéhokoliv směrovače. Této funkcionality můžeme využít například při monitorování provozu a jeho reakcí na různé události. Příkladem takové události může být zjištění nedostupnosti některé sítě a následné reakce ve formě odeslání informačního emailu síťovému administrátorovi. V následujících kapitolách si ukážeme základní konfiguraci směrovače a ukázky částí TCL skriptů, které zajišťují odeslání textových emailů a emailů s přílohou.
1.2 Předpoklady 1.2.1 Síťová topologie Pro ukázku této problematiky byla zvolena jen jednoduchá síťová topologie, která zajišťuje připojení směrovače ze kterého budou posílány emailové zprávy do internetu.
1.2.2 Základní konfigurace směrovače Při konfiguraci je nutné mít směrovač připojen do sítě, ve které se nachází SMTP server zajišťující odeslání emailů. Další podmínkou je konfigurace doménového jména (ip domain name jmeno.cz). Pokud chceme odesílat e-‐mail s adresou odesílatele ve tvaru
[email protected], musí být doménové jméno nakonfigurováno na „domena.cz“. Bez konfigurace doménového jména nebude odesílání emailů fungovat. Konfigurace směrovače: Poznámka: zobrazeny jsou jen nejdůležitější příkazy. no ip domain lookup ip domain name domena.cz ! interface FastEthernet0/0 description To ISP ip address 192.168.137.254 255.255.255.0 duplex auto speed auto ! ip forward-protocol nd ip route 0.0.0.0 0.0.0.0 192.168.137.1
prosinec 2010
2
1.2.3 Doplňkový software Pro nahrávání TCL skriptů do směrovače máme několik možností. Jedno z voleb je využití webového serveru (např. Apache), na který nahrajeme příslušný TCL skript. Další možností je využití TFTP serverů (Trivial File Transfer Protocol). V operačních systémech Linux/Unix můžeme využít dostupných balíčků TFTP, u systémů MS Windows můžeme využít software PumpKIN (free sofware). Příkazy k nahrání a spuštění TCL skriptů: copy tftp: 192.168.0.100/nazev_skriptu.tcl flash:nazev_skriptu.tcl
Nastavení politiky v konfiguračním režimu: R1(config)#event manager directory user policy flash: # komentář: základní složka politiky R1(config)#event manager policy nazev_skriptu.tcl # komentář: přiřazení dané politiky k Event Manageru
2 Implementace 2.1 Registrace skriptu k EEM Máme několik možností zaregistrování skriptů na události v EEM. V rámci jednoho skriptu se může využívat jen jedna z těchto možností, např. můžeme reagovat na události jako jsou stavy síťového rozhraní (interface), změny ve směrovací tabulce, události v syslog atd. V následující ukázce jsou uvedeny některé z těchto možností (bližší informace na webu Cisco). # None ::cisco::eem::event_register_none queue_priority low nice 1 maxrun 600 # Watchdog Timer ::cisco::eem::event_register_timer watchdog name errimt time $errim_period queue_priority low nice 1 # Syslog - reakce na událost v syslogu ::cisco::eem::event_register_syslog occurs 1 maxrun 90 queue_priority low nice 1
pattern .*STANDBY.*STATECHANGE.*
# Object Tracking ::cisco::eem::event_register_track 1 state up queue_priority low nice 1 # Interface ::cisco::eem::event_register_interface name $intf parameter txload entry_op ge entry_val 192 entry_val_is_increment FALSE queue_priority low nice 1 # Cron Job - nadefinování přesného času spouštění skriptu pomocí cronu ::cisco::eem::event_register_timer cron name test cron_entry "0 * * * *" queue_priority low nice 1 maxrun 20
2.2 Nahrání a registrace skriptů Následujícími příkazy nahrajeme a zaregistrujeme skript sendmail.tcl: enable
prosinec 2010
3
copy tftp://A.B.C.D/Sendmail.tcl flash: configure terminal ip domain name domena.cz event manager directory user policy flash: event manager policy Sendmail.tcl
2.3 Formát emailové zprávy Náš příklad vychází ze standardní komunikace s SMTP server, proto je nutné dodržovat správný formát emailové zprávy. V případě, že požadujeme odesílání emailu s přílohou, je nutné správný formát dodržet. Formát komunikace je popsán na webové stránce gentrle.it (http://www.gentle.it/alvise/smtp.htm). Musí být především dodrženo správné odřádkování a posloupnost jednotlivých položek (viz dokument RFC 822).
2.4 Ukázkové skripty Příklad je rozdělen do dvou skriptů, které demonstrují dvě situace odeslání e-‐mailu. První skript zajišťuje odeslání pouze textové zprávy a druhý skript zajišťuje odeslání zprávy společně s přílohou (jakýkoliv textový soubor). Skripty: § sendmail.tcl – skript pro odeslání textového emailu § sendattachment.tcl – skript pro odeslání textového emailu společně s textovou přílohou 2.4.1 Inicializační proměnné Inicializační proměnné obsahují základní nastavení skriptu (adresa odesílatele, adresáta, SMTP server, název směrovače, ...). Cisco nám nabízí dvě možnosti nastavení těchto proměnných: 1. z příkazové řádky směrovače pomocí příkazu (R1(config)#event manager environment _email_from
[email protected]) 2. nadefinování hodnoty proměnné ve skriptu – tato možnost je využita v ukázkových příkladech (např. nám umožňuje nadefinování polí emailových adres či jednodušší migraci skriptu mezi více směrovači) 2.4.2 Popsání důležitých částí skriptu sendmail.tcl Podrobné komentáře jsou napsány přímo v ukázkových TCL skriptech. V této ukázce si popíšeme jen nejdůležitější části skriptů, které musíme správně nastavit. Nastavení SMTP serveru a emailové adresy odesílatele: array set ::sendmail::sendmail { smtphost smtp.vsb.cz from
[email protected] friendly "Router1" } # Nastavení seznamu příjemců # Zde můžeme vepsat celý seznam emailových adres oddělěnných mezerou set toList {
[email protected] [email protected]} puts stdout "!!! Posilam e-mail !!!" # Odeslání e-mailů - zavolání procedury odeslání emailu sendmail::sendmessage $toList Upozorneni "Testovací e-mail z routeru."
prosinec 2010
4
3 Závěrečné zhodnocení Cílem tohoto projektu bylo vytvořit ukázkové skripty pro odesílání emailových zpráv ze směrovačů a zmapování Cisco SMTP TLC knihovny. Na webových stránkách výrobce není žádná dokumentace k této problematice, proto tento projekt prakticky demonstruje využití této knihovny. Tuto funkcionalitu můžeme využít jako informační službu pro síťové administrátory, která nám zajišťuje odeslání informačních emailů v reakci na vyvolanou událost během síťového provozu. Během skriptování bylo nutné dodržet předdefinované formáty emailových záhlaví, které je nutné dodržet. V případě, špatného formátu nebudou zprávy odeslány. Na tuto část skriptu je proto nutné se zaměřit a nechat ji nadefinovanou jak je to v ukázkových souborech. V této dokumentační příručce nejsou dopodrobna popisovány jednotlivé příkazy v jednotlivých souborech, ty dopodrobna popsány přímo v komentářích těchto skriptů.
Reference Elektronické zdroje TFTP server software pro MS Windows URL:
[cit. 2010-‐12-‐20]. Webový server Apache k nahrávání skriptů pomocí HTTP protokolu URL:
[cit. 2010-‐12-‐20] Příklad ukázkového skriptu na stránce společnosti Cisco, ze kterého se vycházelo URL:
[cit. 2010-‐12-‐20]. Struktura formátu e-‐mailové zprávy, která musí být dodržena URL: [cit. 2010-‐12-‐20].
prosinec 2010
5