S
`shl
Grünschnabel
Hoi,
ich hab ein Problem mit einem Shellscript.
Und zwar will ich den aktuellen Tonerstand via SNMP abfragen.
Es funktionier soweit auch:
allerdings will ich beim Werte auslesen eine "for.. in.. do.. done.."-Funktion verwenden, was dann so aussehen wuerde:
Das kann allerdings nicht ausgefuehrt werden, da er folgende "`" nicht richtig setzt (current`echo $p`_val=`snmpget -v 1 -c $community $IP $oid_current`echo $p` | awk -F' ' '{print $4}'`
Habe mich bereits etwa 4 Stunden damit rumgespielt, und bekomms einfach nicht zum laufen.
Hat jemand eine Loesung?
Vielen Dank & viele Grueße,
shl
ich hab ein Problem mit einem Shellscript.
Und zwar will ich den aktuellen Tonerstand via SNMP abfragen.
Es funktionier soweit auch:
Code:
#!/bin/bash
#
# yessir
#
#Eingabeparameter (IP und Community) erkennen und als Variable setzen
IP=`echo $1`
community=`echo $2`
#OiD-Variablen festlegen
#Cyan
oid_maximumcyan='1.3.6.1.2.1.43.11.1.1.8.1.1'
oid_currentcyan='1.3.6.1.2.1.43.11.1.1.9.1.1'
#Magenta
oid_maximummagenta='1.3.6.1.2.1.43.11.1.1.8.1.2'
oid_currentmagenta='1.3.6.1.2.1.43.11.1.1.9.1.2'
#Gelb
oid_maximumyellow='1.3.6.1.2.1.43.11.1.1.8.1.3'
oid_currentyellow='1.3.6.1.2.1.43.11.1.1.9.1.3'
#Schwarz
oid_maximumblack='1.3.6.1.2.1.43.11.1.1.8.1.4'
oid_currentblack='1.3.6.1.2.1.43.11.1.1.9.1.4'
#Bildtrommel
oid_maximumbildtrommel='1.3.6.1.2.1.43.11.1.1.8.1.5'
oid_currentbildtrommel='1.3.6.1.2.1.43.11.1.1.9.1.5'
#Uebertragungswalze
oid_maximumwalze='1.3.6.1.2.1.43.11.1.1.8.1.6'
oid_currentwalze='1.3.6.1.2.1.43.11.1.1.9.1.6'
#Fixierer
oid_maximumfuser='1.3.6.1.2.1.43.11.1.1.8.1.7'
oid_currentfuser='1.3.6.1.2.1.43.11.1.1.9.1.7'
#Fehleranzahl
oid_fehler='1.3.6.1.2.1.43.5.1.1.18.1'
#Werte auslesen
#maximum
maximumcyan_val=`snmpget -v 1 -c $community $IP $oid_maximumcyan | awk -F' ' '{print $4}'`
maximummagenta_val=`snmpget -v 1 -c $community $IP $oid_maximummagenta | awk -F' ' '{print $4}'`
maximumyellow_val=`snmpget -v 1 -c $community $IP $oid_maximumyellow | awk -F' ' '{print $4}'`
maximumblack_val=`snmpget -v 1 -c $community $IP $oid_maximumblack | awk -F' ' '{print $4}'`
maximumbildtrommel_val=`snmpget -v 1 -c $community $IP $oid_maximumbildtrommel | awk -F' ' '{print $4}'`
maximumwalze_val=`snmpget -v 1 -c $community $IP $oid_maximumwalze | awk -F' ' '{print $4}'`
maximumfuser_val=`snmpget -v 1 -c $community $IP $oid_maximumfuser | awk -F' ' '{print $4}'`
#current
currentcyan_val=`snmpget -v 1 -c $community $IP $oid_currentcyan | awk -F' ' '{print $4}'`
currentmagenta_val=`snmpget -v 1 -c $community $IP $oid_currentmagenta | awk -F' ' '{print $4}'`
currentyellow_val=`snmpget -v 1 -c $community $IP $oid_currentyellow | awk -F' ' '{print $4}'`
currentblack_val=`snmpget -v 1 -c $community $IP $oid_currentblack | awk -F' ' '{print $4}'`
currentbildtrommel_val=`snmpget -v 1 -c $community $IP $oid_currentbildtrommel | awk -F' ' '{print $4}'`
currentwalze_val=`snmpget -v 1 -c $community $IP $oid_currentwalze | awk -F' ' '{print $4}'`
currentfuser_val=`snmpget -v 1 -c $community $IP $oid_currentfuser | awk -F' ' '{print $4}'`
#Fuellstand in Prozent berechnen
#cyan
cyan=`expr \( $currentcyan_val \* 100 \) \/ $maximumcyan_val`
#magenta
magenta=`expr \( $currentmagenta_val \* 100 \) \/ $maximummagenta_val`
#yellow
yellow=`expr \( $currentyellow_val \* 100 \) \/ $maximumyellow_val`
#black
black=`expr \( $currentblack_val \* 100 \) \/ $maximumblack_val`
#bildtrommel
bildtrommel=`expr \( $currentbildtrommel_val \* 100 \) \/ $maximumbildtrommel_val`
#uebertragungswalze
walze=`expr \( $currentwalze_val \* 100 \) \/ $maximumwalze_val`
#fuser
fuser=`expr \( $currentfuser_val \* 100 \) \/ $maximumfuser_val`
#Fehleranzahl ausgeben
error=`snmpget -v 1 -c $community $IP $oid_fehler | awk -F' ' '{print $4}'`
#TEST:
#Werte zurueckgeben
#echo "$cyan | $magenta | $yellow | $black | $bildtrommel | $walze | $fuser | $error"
#Exit-Codes ausgeben
if [ $cyan -le 5 -o $magenta -le 5 -o $yellow -le 5 -o $black -le 5 -o $bildtrommel -le 5 -o $walze -le 5 -o $fuser -le 10 -o $error -ne 0 ]
then echo 'Schwerer Fehler aufgetreten (Verbrauchsmaterial: Cyan:'`echo $cyan`'%/Magenta:'`echo $magenta`'%/Gelb:'`echo $yellow`'%/Schwarz:'`echo $black`'%/Trommel:'`echo $bildtrommel`'%/Walze:'`echo $walze`'%/Fixierer:'`echo $fuser`'%/Status:'`echo $error`')'
exit 2
elif [ $cyan -le 10 -o $magenta -le 10 -o $yellow -le 10 -o $black -le 10 -o $bildtrommel -le 10 -o $walze -le 10 -o $fuser -le 10 -o $error -eq 0 ]
then echo 'Fehler aufgetreten (Verbrauchsmaterial: Cyan:'`echo $cyan`'%/Magenta:'`echo $magenta`'%/Gelb:'`echo $yellow`'%/Schwarz:'`echo $black`'%/Trommel:'`echo $bildtrommel`'%/Walze:'`echo $walze`'%/Fixierer:'`echo $fuser`'%/Status:'`echo $error`')'
exit 1
else
echo 'Keine Fehler (Verbrauchsmaterial: Cyan:'`echo $cyan`'%/Magenta:'`echo $magenta`'%/Gelb:'`echo $yellow`'%/Schwarz:'`echo $black`'%/Trommel:'`echo $bildtrommel`'%/Walze:'`echo $walze`'%/Fixierer:'`echo $fuser`'%/Status:'`echo $error`')'
exit 0
fi
allerdings will ich beim Werte auslesen eine "for.. in.. do.. done.."-Funktion verwenden, was dann so aussehen wuerde:
Code:
...
...
#Werte auslesen
#maximum
for i in cyan magenta yellow black bildtrommel walze fuser; do
current`echo ip`_val=`snmpget -v 1 -c $community $IP $oid_current`echo $i` | awk -F' ' '{print $4}'`
done
#current
for p in cyan magenta yellow black bildtrommel walze fuser; do
current`echo $p`_val=`snmpget -v 1 -c $community $IP $oid_current`echo $p` | awk -F' ' '{print $4}'`
done
...
...
Das kann allerdings nicht ausgefuehrt werden, da er folgende "`" nicht richtig setzt (current`echo $p`_val=`snmpget -v 1 -c $community $IP $oid_current`echo $p` | awk -F' ' '{print $4}'`
Habe mich bereits etwa 4 Stunden damit rumgespielt, und bekomms einfach nicht zum laufen.
Hat jemand eine Loesung?
Vielen Dank & viele Grueße,
shl