Cisco: show log con il Python

0
Letto 5.318 volte

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.