Bonjour à tous,

Je fais un petit script pour connecter l'état de mes équipements, sauf que je bloque pour traiter la donnée.

Voici ce que je fais :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
ID=$(snmpwalk -c $1 -v $2 $3 1.3.6.1.4.1.9.9.500.1.2.1.1.6 | awk -F "." '{print $NF}' | awk '{print $1}')
==> Cette commande me permet de connaitre le nombre d'élément que je dois superviser (nombre variable)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
for element in $ID
        do
                res=$(snmpwalk -c $1 -v $2 $3 1.3.6.1.4.1.9.9.500.1.2.1.1.6.$element)
                valeur=$(echo $res | awk '{print $NF}')
Et c'est la mon problème car le résultat est traité dans sa globalité, or j'aimerais pouvoir récupérer la sortie pour chacun de mes éléments.

Voici le débug pour y voir plus clair :
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
++ snmpwalk -c snmpget -v 2c 10.254.22.254 1.3.6.1.4.1.9.9.500.1.2.1.1.6
++ awk -F . '{print $NF}'
++ awk '{print $1}'
+ ID='1001
2001
3001
4001'
+ for element in '$ID'
++ snmpwalk -c X -v X X.X.X.X 1.3.6.1.4.1.9.9.500.1.2.1.1.6.1001
+ res='RFC1155-SMI::enterprises.9.9.500.1.2.1.1.6.1001 = INTEGER: 4'
++ echo RFC1155-SMI::enterprises.9.9.500.1.2.1.1.6.1001 = INTEGER: 4
++ awk '{print $NF}'
+ valeur=4
+ echo 4
4
+ for element in '$ID'
++ snmpwalk -c X -v X X.X.X.X 1.3.6.1.4.1.9.9.500.1.2.1.1.6.2001
+ res='RFC1155-SMI::enterprises.9.9.500.1.2.1.1.6.2001 = INTEGER: 4'
++ echo RFC1155-SMI::enterprises.9.9.500.1.2.1.1.6.2001 = INTEGER: 4
++ awk '{print $NF}'
+ valeur=4
+ echo 4
4
+ for element in '$ID'
++ snmpwalk -c X -v X X.X.X.X 1.3.6.1.4.1.9.9.500.1.2.1.1.6.3001
+ res='RFC1155-SMI::enterprises.9.9.500.1.2.1.1.6.3001 = INTEGER: 4'
++ echo RFC1155-SMI::enterprises.9.9.500.1.2.1.1.6.3001 = INTEGER: 4
++ awk '{print $NF}'
+ valeur=4
+ echo 4
4
+ for element in '$ID'
++ snmpwalk -c X -v X X.X.X.X 1.3.6.1.4.1.9.9.500.1.2.1.1.6.4001
+ res='RFC1155-SMI::enterprises.9.9.500.1.2.1.1.6.4001 = INTEGER: 4'
++ echo RFC1155-SMI::enterprises.9.9.500.1.2.1.1.6.4001 = INTEGER: 4
++ awk '{print $NF}'
+ valeur=4
+ echo 4
En définitive ce que j'aimerais c'est que pour chacun de mes éléments (1001,2001,etc...) lui associer sa valeur.
Dois-je forcement passer par un tableau ?

Pour vous donner un idée, l'objectif du script est de remonter une alerte si un des éléments n'est pas égal au chiffre 4.

Merci par avance,