Bonjour, je voudrais réaliser un script en bash uniquement (je ne peut pas utiliser awk du à des restrcitions sur la distribution du serveur) qui vérifie des données sur la commande ibstat
ibstat me retourne ceci par exemple :
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
|
# ibstat
CA 'mlx4_0'
CA type: MT25418
Number of ports: 2
Firmware version: 2.3.0
Hardware version: a0
Node GUID: 0x0002c9030002fb04
System image GUID: 0x0002c9030002fb07
Port 1:
State: Active
Physical state: LinkUp
Rate: 20
Base lid: 2
LMC: 0
SM lid: 1
Capability mask: 0x02510868
Port GUID: 0x0002c9030002fb05
Port 2:
State: Down
Physical state: Polling
Rate: 10
Base lid: 0
LMC: 0
SM lid: 0
Capability mask: 0x02510868
Port GUID: 0x0002c9030002fb06 |
Je voudrais pour chaque port vérifier que Physical state: est égale à LinkUp sinon je retourne une erreur.
J'arrive avec grep et awq à isoler le 1er Physical state, mais comment on fait pour faire une sorte de boucle for pour checker chaque "noeud" Port ?
comme ceci :
ibstat | grep "Physical state" | awk '{ print $3 }'
mais pour tous les "Port"
dans mon exemple je voudrais retourner "erreur avec le port 2".
Je cherche un moyen de parcourir les noeuds port.
Partager