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