terrible Posted May 5, 2010 Posted May 5, 2010 Прошу помощи: на фряхе поднял сервисы, хочу их мониторить через snmpd, нашёл нужный мне скрипт, однако никак не могу понять, как именно он должен работать в случае опроса snmpwalk. #!/bin/sh if [ -z "$*" ]; then exit 0 fi mpd_host='127.0.0.1' mpd_port='5005' mpd_user='login' mpd_pass='password' if [ $1 = '-s' ]; then if [ -n "$4" ]; then port=`printf "$mpd_user\r$mpd_pass\rshow sessions\rexit\r" | nc -4n $mpd_host $mpd_port | grep -E 'ng[0-9]+' | awk '{print $6}'` if [ -n "$port" ]; then if [ $4 -eq $port ]; then printf "$mpd_user\r$mpd_pass\rlink [%X]\rclose\rexit\r" $4 | nc -4n $mpd_host $mpd_port > /dev/null 2>&1 exit 0 fi fi fi fi if [ $1 = '-g' ]; then check_port=`echo $2 | sed s/'.1.3.6.1.4.1.2021.255.'//g | awk '{print $1}'` sessions=`printf "$mpd_user\r$mpd_pass\rshow sessions\rexit\r" | nc -4n $mpd_host $mpd_port | grep -E 'ng[0-9]+' | awk '{print $6":"$8}'` for i in $sessions; do port=`echo $i | sed s/:/' '/g | awk '{print $1}'` user=`echo $i | sed s/:/' '/g | awk '{print $2}'` echo $2.$port echo 'string' echo $user done fi Если скрипт запускать с демона как pass, он отвечает только одним OID, зато правильным. Если запускать как extend, возвращает много чего, в чём говорит, что Permission Denied Никак не могу понять, как же заставить его отвечать кучей OID в случае опроса snmpwalk? Если есть у кого-нибудь простой скрипт, который отвечает на валк несколькими OID-ами, покажите пожалуйста, а я сам дальше допилю. Вставить ник Quote
Ilya Evseev Posted May 5, 2010 Posted May 5, 2010 http://netilium.org/~mad/technotes/postfixstat/ ? Вставить ник Quote
terrible Posted May 6, 2010 Author Posted May 6, 2010 С перла то без проблема получаю ответ на snmpwalk, а вот с shell проблемы :( Вставить ник Quote
YuryD Posted May 7, 2010 Posted May 7, 2010 (edited) С перла то без проблема получаю ответ на snmpwalk, а вот с shell проблемы :( C mpd хотите кол-во пользователей взять ? у mpd5 + snmpd можно проще snmpwalk -v 2c -c community router ifNumber - количество активных интерфейсов. Вычтите статические. Edited May 7, 2010 by YuryD Вставить ник Quote
terrible Posted May 7, 2010 Author Posted May 7, 2010 (edited) Количество забираю, там всё ок, не могу запустить скрипт, который бы заходил в консоль MDP и выдавал бы логины и интерфейсы абонентов, тупо не получается запустить shell скрипт в режиме exec на snmpd :( в /usr/local/share/snmp/snmpd.conf указываю: extend .1.3.6.1.4.1.2021.50 /bin/sh /usr/local/etc/mpd5/mytest.sh # cat /usr/local/etc/mpd5/mytest.sh #!/bin/sh echo "first line" echo "second line" exit 5 после опроса snmpwalk получаю это: array(14) { ["enterprises.ucdavis.50.1.0"]=> string(1) "1" ["enterprises.ucdavis.50.2.1.2.7.47.98.105.110.47.115.104"]=> string(31) ""/usr/local/etc/mpd5/mytest.sh"" ["enterprises.ucdavis.50.2.1.3.7.47.98.105.110.47.115.104"]=> string(2) """" ["enterprises.ucdavis.50.2.1.4.7.47.98.105.110.47.115.104"]=> string(2) """" ["enterprises.ucdavis.50.2.1.5.7.47.98.105.110.47.115.104"]=> string(1) "5" ["enterprises.ucdavis.50.2.1.6.7.47.98.105.110.47.115.104"]=> string(1) "1" ["enterprises.ucdavis.50.2.1.7.7.47.98.105.110.47.115.104"]=> string(1) "1" ["enterprises.ucdavis.50.2.1.20.7.47.98.105.110.47.115.104"]=> string(1) "4" ["enterprises.ucdavis.50.2.1.21.7.47.98.105.110.47.115.104"]=> string(1) "1" ["enterprises.ucdavis.50.3.1.1.7.47.98.105.110.47.115.104"]=> string(50) ""/usr/local/etc/mpd5/mytest.sh: Permission denied"" ["enterprises.ucdavis.50.3.1.2.7.47.98.105.110.47.115.104"]=> string(50) ""/usr/local/etc/mpd5/mytest.sh: Permission denied"" ["enterprises.ucdavis.50.3.1.3.7.47.98.105.110.47.115.104"]=> string(1) "1" ["enterprises.ucdavis.50.3.1.4.7.47.98.105.110.47.115.104"]=> string(1) "1" ["enterprises.ucdavis.50.4.1.2.7.47.98.105.110.47.115.104.1"]=> string(50) ""/usr/local/etc/mpd5/mytest.sh: Permission denied"" } Где ошибся? Если же запускать супермегатупой скрипт: #!/bin/sh echo "1.3.6.1.4.1.2021.50" echo "string" echo "second line" exit 5 через pass .1.3.6.1.4.1.2021.50 /bin/sh /usr/local/etc/mpd5/mytest.sh то получаю ошибку: Error: OID not increasing: UCD-SNMP-MIB::ucdavis.50 >= UCD-SNMP-MIB::ucdavis.50 почему? какой оид должен отдаваться валку, чтобы валк понял, что оид инкрисится? Добавлено чуть позже: отбой тревоги, истрахал себе мозг, но сделал путём спаривания с shell и perl. Цель достигнута. Edited May 7, 2010 by terrible Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.