|
|
|
|
Bonjour à tous,
Je souhaite créer un script (pour incorporer dans nagios) qui remonte le nom des interfaces, si elles sont up ou down et depuis combien de temps.
J'arrive à récupérer les infos mais pas à les mettre en forme.
Voici mon script:
n=`snmpget 10.63.1.63 -c public -v 2c interfaces.ifNumber.0 | cut -d "" -f 4` // récupération du nombre d'interfaces
a=`snmpwalk 10.63.1.63 -c public -v 2c interfaces.ifTable.ifEntry.ifDescr | cut -d " " -f 4 ` // récupération du nom des interfaces
b=`snmpwalk 10.63.1.53 -c public -v 2c 1.3.6.1.2.1.2.2.1.8 | cut -d " " -f 4 ` // récupération de l'état des interfaces
c=`snmpwalk 10.63.1.53 -c public -v 2c 1.3.6.1.2.1.2.2.1.9 | cut -d " " -f 5 ` //récupération de la durée de l'état
i=1
until ($i -lt $n) // cette comparaison ne fonctionne pas dans le script
do
echo "$a est $b depuis $c" | head -n $i | tail -n 1
# la commande echo ne fonctionne pas, elle affiche " est depuis |head -n $i | tail -n 1
i=$($i+1) // je n'incrémente pas i de 1 mais j'obtiens 1+1
echo $i
done
Merci d'avance pour votre aide
Configuration: Linux Debian Firefox 1.0.4
Salut,
|
Voyons voyons ...
I=1
I=$(( ${I} + 1 ))
echo ${I}I est bien égal à 2(oui oui, c'est magique ;-)
7/ Dernier conseil d'écriture : l'identation c'est tellement plus pratique : ça structure la conception et surtout la lecture (et la relecture) Dans les trucs que je signale beaucoup se prapprochent de l'écriture dite POSIX qui rend les programmes à peu près portable (au chemin des commandes et à leurs options près selon les unix ou les linux) Bon courage Jean-Pierre Zuate La Fage Conseil |
Et oui, le shell se gourre rarement :
|
Oups d'accord, j'avais mal lu pour les crochets :)
|
Mettre un echo entre until et do, ça ne me parait pas bien clair.
echo "suite" 2/ Remplace echo "debut de la boucle"par echo "debut de la boucle $I $n" Tu verra bien les valeurs de I et de n. Je mettrais (presque) ma main à couper que n vaut zéro ... Jean-Pierre Zuate La Fage Conseil |
J'obtiens ceci:
|
Ce n'est pas la faute du cut sinon ton n ne sera pas remplis et s'il l'était avec un caractère alphanumérique le shell te le dirait (c'est dû à l'opérateur -lt qui ne concerne que les valeurs numériques).
|
J'ai remplacé le lt par un ge et la boucle marche coorectement mais j'ai toujours un soucis.
|
Salut,
newa=$(echo "$a" | head -n "$I" | tail -n 1) newb=$(echo "$b" | head -n "$I" | tail -n 1) newc=$(echo "$c" | head -n "$I" | tail -n 1) echo "$newa est $newb depuis $newc"En espérant avoir bien suivi... ;-)) Z'@+...che. JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé. |