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 :
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
 
# 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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.