Наблюдение за принтерами по 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

Поделиться
Отправить
Запинить
 568   2019   bash   ink   pinter   snmp   toner