Interprétation des reponses par shell

Résolu
yannosh001 -  
 yannosh001 -
Bonjour,

j'ai un script shell qui exécute des commandes SNMP pour connaitre si les ports d'un switch sont occupés ou non, ce qui m'est renvoyé ressemble à cela :


interfaces.ifTable.ifEntry.ifOperStatus.100 : INTEGER: up
interfaces.ifTable.ifEntry.ifOperStatus.1025 : INTEGER: up
interfaces.ifTable.ifEntry.ifOperStatus.1026 : INTEGER: down
interfaces.ifTable.ifEntry.ifOperStatus.1027 : INTEGER: up
interfaces.ifTable.ifEntry.ifOperStatus.1028 : INTEGER: down
interfaces.ifTable.ifEntry.ifOperStatus.1029 : INTEGER: down
interfaces.ifTable.ifEntry.ifOperStatus.1030 : INTEGER: down
interfaces.ifTable.ifEntry.ifOperStatus.1031 : INTEGER: up
interfaces.ifTable.ifEntry.ifOperStatus.1032 : INTEGER: down
interfaces.ifTable.ifEntry.ifOperStatus.1033 : INTEGER: down


comment je pourrais faire pour que mon script compte les "up" et qu'a la fin il me les donne par exemple par

echo Le switch "$nomduswitch" a "$compteurUP" ports d'utilisés

3 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Si la sortie des commandes SNMP est envoyée dans un fichier :
    compteurUP=$(grep -c "up$" fichier)
    ;-))

    0
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    Par ex. avec awk:
    awk 'BEGIN {up=0;down=0} ; $NF ~ /up/ {up++} ; $NF ~ /down/ {down++} ; END {print "UP " up " DOWN " down }'
    0
  3. yannosh001
     
    Merci beaucoup, ça m'a bien aidé, mais en fait j'ai fait plus simple :

    #!/bin/sh

    SNMPWALK="snmpwalk -v1 -c public"

    COMPTEURuP=` $SNMPWALK "$1" interfaces.ifTable.ifEntry.ifOperStatus | grep -c ": up"`

    echo "$1" = "$COMPTEURuP" ports UP
    0