Bonjour,
je suis sur un script afin de détecter sur des ports sur des équipements CISCO le spanning tree et leurs coûts.
Mon script fonctionne bien pour un seul host. Quand j’intègre à mon script une boucle afin de lire ligne par ligne un fichier d'hôtes, mon script ne lit que la 1ere ligne et s'arrête sans que je sache pourquoi
si quelqu'un pouvait m'expliquer le pourquoi du comment et me débuguer ! merci à vous par avance !
(inutile de vous dire que j'ai vérifié mon fichier texte, il est sous un bon format et j'ai bien une entrée par lignes)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 #!/bin/bash ######################################################################################### # # # # # Requirements: snmpwalk, snmpget (available in NetSNMP package) # # Last modification: 03/06/2014 # # Purpose of this plugin: detection de cout STP sur les ports # # # # Arguments: # # ./check-multi-stp-cisco.sh community snmp_version # # $1 $2 # ######################################################################################### # fichier de correspondance file_stp='/usr/local/nagios/type_stp.txt' # fichier cisco list_cisco=`cat /usr/local/nagios/cisco.txt ` # OID STP cisco OID_STP_COST='1.3.6.1.2.1.17.2.15.1.5' OID_PORT_STP='1.3.6.1.2.1.17.2.15.1.3' OID_DESC_PORT='1.3.6.1.2.1.17.1.4.1.2' OID_STP_TYPE='1.3.6.1.4.1.9.9.82.1.6.1' for a in $list_cisco do # on vérifie l'état du STP sur le switch type_stp=$(snmpwalk -c $1 -v$2 $a $OID_STP_TYPE | awk {'print $4'}) type_stp_label=$(cat $file_stp | grep -w $type_stp | cut -d ":" -f2) # on regarde le nombre de ports qu'il y a de configuré en STP ports_stp=$(snmpwalk -c $1 -v$2 $a $OID_PORT_STP | cut -d"." -f12 | cut -d'=' -f1 | wc -l) if [ $ports_stp = 0 ] then echo "pas de ports en STP" exit 0 elif test $(snmpwalk -c $1 -v$2 $a $OID_PORT_STP | cut -d"." -f12 | cut -d'=' -f1 | wc -l ) -gt 1 then for (( i=$( snmpwalk -c $1 -v$2 $a $OID_PORT_STP | cut -d"." -f12 | cut -d'=' -f1 | wc -l) ; i>0 ; i-=1 )) do ports_stp_isole=$(snmpwalk -c $1 -v$2 $a $OID_PORT_STP | cut -d"." -f12 | cut -d'=' -f1 | tail -n $i | head -n 1) cout_ports_stp_isole=$(snmpwalk -c $1 -v$2 $a $OID_STP_COST.$ports_stp_isole | awk {'print $4'} | tail -n $i | head -n 1) PORTS_isole=$(snmpwalk -c $1 -v$2 $a $OID_DESC_PORT.$ports_stp_isole | awk {'print $4'} | tail -n $i | head -n 1) ports_desc_stp_isole=$(snmpwalk -c $1 -v$2 $a IF-MIB::ifDescr.$PORTS_isole | awk {'print $4'} | tail -n $i | head -n 1) stp=$"[le cout de $ports_desc_stp_isole est de $cout_ports_stp_isole]" total_stp="$total_stp $stp" done echo $a est en $type_stp_label echo $total_stp exit 1 echo erreur de script exit 2 fi done
Partager