Наблюдение за принтерами по SNMP
Удобно наблюдать состоянием картриджей сетевых принтеров с помощью следующего bash-скрипта:
#!/bin/bash
function isalive {
ping -c 1 -i 0.2 -W 1 $1 &>/dev/null
if [ $? -ne 0 ] ; then return 1;else return 0; fi
}
function show_ink
{
ip=$1
name=$2
mib_c="1.3.6.1.2.1.43.11.1.1.6"
mib_f="1.3.6.1.2.1.43.11.1.1.8"
mib_l="1.3.6.1.2.1.43.11.1.1.9"
full=($( snmpwalk -v1 -c public $ip $mib_f -Oa | awk -F "INTEGER: " '{print $2}'))
cur=($( snmpwalk -v1 -c public $ip $mib_l -Oa | awk -F "INTEGER: " '{print $2}'))
echo '<td valign="top">'
echo '<b><a href="http://'$ip'/" name="'$name'" target="_blank">'$name'</a></b><br />'
for ((i = 0; i < ${#full[@]}; i++))
do
x=${cur[$i]}
y=${full[$i]}
ii=$((i+1))
level=`echo $x/$y*100|bc -l|awk -F "." '{print $1}'`
if [ -z $level ]; then level=1; fi
if [ `snmpwalk -v1 -c public $ip $mib_c.1.$ii -O0vs| awk -F ":" '{print $1}'| grep -i 'Hex-STRING'` ];then
ink=`snmpwalk -v1 -c public $ip $mib_c.1.$ii -O0vsq | tr -d '\n' | xxd -r -p `
else
ink=`snmpwalk -v1 -c public $ip $mib_c.1.$ii -O0vsq | tr -d '"'`
fi
if [ -z "$ink" ]; then
continue
fi
if (( $level<0 )); then level=0; fi
if (( $level<20 ));then
if (( $level<1 ));then
echo '<font color="red"><b>'$ink:$level%'</b></font><br />'
else
echo '<font color="goldenrod">'$ink:$level%'</font><br />'
fi
else
echo $ink:$level%'<br />'
fi
done
echo '</td>'
}
j=0
echo '<meta charset="utf-8">'
echo '<meta http-equiv="refresh" content="15" >'
echo '<table cellpadding="10">'
echo '<tr>'
while IFS='' read -r line || [[ -n "$line" ]]; do
ip=`echo "$line"|awk '{print $1}'`
name=`echo "$line"|awk -F"\"" '{print$2}'`
if isalive $ip; then show_ink $ip "$name"; j=$(( j+1 )); fi
if (( $j==3 )); then j=0;echo '</tr><tr>';fi
done < "/home/ipator/ink/printers.txt"
echo '</tr></table>'
Скрипт генерит страничку, из списка файла printers.txt
192.168.111.10 «HP 5550»
192.168.111.11 «HP m750»
192.168.111.12 «HP T795»
192.168.111.13 «HP T790»
192.168.111.14 «HP 5525»
192.168.111.15 «Epson 9880»
192.168.111.16 «Epson 3880»
192.168.111.17 «Epson SC-P800»
192.168.111.17 «HP M276»
192.168.111.18 «HP 1536»
192.168.111.19 «HP 1505»
192.168.111.20 «KX-MB2051»
192.168.111.21 «HP 400»
192.168.111.22 «HP 1212»
192.168.111.23 «HP 1606»
192.168.111.24 «HP M4276»
Получается вот такая страничка
Запускать скрипт можно через cron:
*/5 * * * * /opt/ink/showink.sh