Bonjour, je débute en bash et je voudrais réaliser un script 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 | # 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 :
1 | 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.
+0
-0