Newsgroup: it.comp.reti.cisco
Titolo: SNMP e Cisco NAT Translastions su c3745

Buondģ
 
ho un C2600 e un template per cacti trovato qui:
 
http://forums.cacti.net/about33233.html
 
 
In pratica mi mostra il numero delle transazioni di nat.
Esso funziona su 2610XM, su 2611XM e su 2651XM con IOS 12.4
 
Mi piacerebbe farlo funzionare su un cisco 3745 (con ultimo 12.4 o 12.4T)
Ma il grafico mi ritorna sempre valore 0.
 
Qualcuno ha idea di come farlo funzionare?
 
 

 Buondì

se con snmpwalk e tutti i MIB necessari vedi che non c'e' niente di
paragonabile un un 3750 (e
questo valore preciso e' 0 quindi sappiamo che devi guardare altrove)
io lo farei con perl e expect,
o se (io) fossi meno pigro userei EEM e gli OID SNMP artigianali.
 

 Buondě


 caricati correttamente
 
se tu avessi tutti i mib, snmpwalk ecc. a posto sul tuo sistema
sarebbe piu'
semplice.
 
comunque, per adesso, fallo con expect. o documentati su EEM.

 Qualcuno ha idea di come farlo funzionare?
 
Questo "template" sembra guardare .1.3.6.1.4.1.9.10.77.1.2.3.0,
conosciuto anche come CISCO-IETF-NAT-
MIB::cnatAddrPortBindNumberOfEntries.0
 
Se il tuo router non ha questo valore, questo template non
funzionera'.
 
Magari con una buona raccolta di MIB e snmpwalk -v2c -c finto -mALL
iltuorouter .1 >iltuorouter.walk puoi
trovare qualcosa ma guardando sul mio 877, per esempio, non ho trovato
niente di utile.
 
A questo punto forse ti tocca usare altri metodi, come ho gia' detto.
L'EEM e' quasi sicuramente
la cosa piu' furba, e su 
https://supportforums.cisco.com/index.jspa
 
troverai degli esempi, credo.
 
Visto che io ho gia' svariati script perl e expect che uso in MRTG
quando l'SNMP non ha
quello che voglio, io lo farei con perl e/o expect.
 
per esempio:
 
#!/usr/bin/expect
 
spawn telnet 10.1.1.1
expect "name:"
send "pinco\r"
expect "word:"
send "pallino\r"
expect "#"
send "term length 0\r"
expect "#"
send "show ip nat translations\r"
expect "#"
send "exit\r"
 
chiami questo nat.expect
 
poi
 
#./nat.expect | wc -l
95
 
ovviamente ci sono delle righe inziali di roba che non conta.
 
allora sottrai 14 (nel mio caso) e usi il risultato in MRTG o cacti o
quello che vuoi.

https://supportforums.cisco.com/thread/2048060
 

 quello che vuoi.
 
ci saranno modi migliori per farlo ma:
 
"nat.p"
 
#!/usr/bin/perl
 
$a=<>;
$a-=14;
#14 perche' e' il numero di righe che non c'entrano quando eseguo
nat.expect sul mio sistema
print $a."\n";
 
poi facendo:
 
./nat.expect | wc -l | ./nat.p
 
ottengo, per esempio, 45.
 
allora metto "./nat.expect | wc -l | ./nat.p" come script externo in
cacti o mrtg o quello
che e', o magari creo "nat.sh" con quel comando dentro e metto
"nat.sh" come script externo
in cacti o mrtg.
 
potrebbe essere piu' sensato usare show ip nat statistics in expect e
prendere il valore con grep, cut e roba cosi'.

e se vuoi fare questo per piu' router/switch diversi, invece di avere
un IP fisso in nat.expect
metti la riga:
 
spawn telnet [lindex $argv 0]
 
 
e chiami nat.expect con
 
nat.expect 10.1.2.3
o quello che e'.
 

Se pensi di avere numeri altini di nat translations, sarebbe meglio
fare qualcosa come:
 
 
adam@ubuntu:~$ more nat.p
#!/usr/bin/perl
 
while (<>) {
if (/active translations: (\d+) /) {
print $1."\n";
exit;
}
}
adam@ubuntu:~$ more nat.expect
#!/usr/bin/expect
 
spawn telnet [lindex $argv 0]
expect "name:"
send "pinco\r"
expect "word:"
send "pallino\r"
expect "#"
send "show ip nat statistics\r"
expect "#"
send "exit\r"
 
 
adam@ubuntu:~$ ./nat.expect 10.1.1.1 | ./nat.p
5901
 
e' meno lavoro per il router e il computer.
 
sicuramente c'e' un modo migliore per farlo ma questo (senza usare
expect e perl
per cosi' poco) lo puoi inventare tu

ed eccolo che funziona:
 
http://www.ghira.mistral.co.uk/nattranslations-day.png
 

 
http://www.ghira.mistral.co.uk/nattranslations-day.png
 
 
Quindi questo è il risultato di script esterni integrati in 
MRTG....Molto interessante e utile!
 
Invece in che modo si potrebbe sfruttare l'Embedded Event Manager in un 
caso come questo, di necessità di analisi quantitativa delle nat 
translations di un router?
 
Si programma ad esempio uno show ip nat translation | redirect tftp:// 
ecc ecc ogni tot di tempo?
 
 

 ecc ecc ogni tot di tempo?
 
A quanto pare e' possibile usare EEM per mettere valori in OID SNMP
totalmente inventati.
 
A quel punto dall'esterno usi SNMP e basta. Visto che so gia' usare
expect e perl
non mi sono informato molto su questa possibilita' ma forse dovrei.