#!/bin/bash #Mettiamo in $1 indirizzo dell'agent e in $2 nome del processo # test numero argomenti if [[ $# -ne 2 ]] ; then echo "Numero argomenti errato"; exit 1; fi #Controllo argomento ip ip="$1" if [[ "$ip" =~ ^(([1-9]?[0-9]|1[0-9][0-9]|2([0-4][0-9]|5[0-5]))\.){3}([1-9]?[0-9]|1[0-9][0-9]|2([0-4][0-9]|5[0-5]))$ ]]; then { : } else { echo "$ip is not a valid IP address" exit 1 } fi #diamo per scontato sia che $2 contenga un nome di processo, # sia che il processo sia tra quelli controllati da SNMP... F=$(mktemp) snmpwalk -v 1 -c public "$ip" .1.3.6.1.4.1.2021.2 > $F #scriviamo tabella proc nel file temporaneo, con gli OID alfabetici #ricava OID della cella con il conteggio del processo: # facendo grep della linea che finisce con il nome del processo; # ricavando con cut la sola parte di OID; # e sostituendo il penultimo livello dell'OID da prNames a prCount. # Così l'ultimo livello dell'OID resta il numero che identifica le righe relative al processo voluto! OIDcount=$(grep "STRING: $2$" "$F" | cut -f1 -d' ' | sed 's/prNames/prCount/') NUM=$(snmpget -v 1 -c public "$ip" "$OIDcount" | cut -f4 -d' ') echo "Numero istanze di $2: $NUM" #per verificare se il numero di istanze attive è entro i limiti, verifico se prErrorFlag vale noError(0) OIDflag=$(echo "$OIDcount" | sed 's/prCount/prErrorFlag/') if [[ $(snmpget -v 1 -c public "$ip" "$OIDflag") =~ noError"(0)"$ ]] ; then { echo "Soglia non violata per $2"; } else { echo "Soglia violata per $2" } fi