Interprétation des reponses par shell

Résolu
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. Modérateur
    Salut,

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

    0
    1. Par ex. avec awk:
      awk 'BEGIN {up=0;down=0} ; $NF ~ /up/ {up++} ; $NF ~ /down/ {down++} ; END {print "UP " up " DOWN " down }'
      0
      1. 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