Supponiamo di avere un router configurato per accettare il login via telnet utilizzando, per semplicità, al posto del radius il database utenti locale, come nella configurazione sottoriportata:
service timestamps log datetime ! aaa new-model aaa authentication login Python-Telnet local ! username pippo password 7 105E00091518 ! line vty 0 4 login authentication Python-Telnet ! end
Ed ecco un semplice script in Python che si collega al nostro router, lo interroga per vedere i log, chiude la connessione e stampa il risultato:
import telnetlib username = "pippo" password = "pippo" router = "10.10.10.254" tn = telnetlib.Telnet(router) # Inizializzo il telnet tn.read_until("Username: ") # Attendo il prompt Username: inviatomi dal router tn.write(username + "\r\n") if password: tn.read_until("Password: ") tn.write(password + "\r\n") tn.write("terminal length 0" + "\r\n") # terminal length impostato a 0 per non avere interruzioni tn.write("sh log"+ "\r\n") # Mostrami i log please... tn.write("q" + "\r\n") # Chiudo log = tn.read_all() tn.close() # Chiudo il telnet print log
Ovviamente il bello è che usando altri strumenti messi a disposizione di Python, come le regex, si possono fare cose molto più interessanti.