terrible Опубликовано 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-ами, покажите пожалуйста, а я сам дальше допилю. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 5 мая, 2010 · Жалоба http://netilium.org/~mad/technotes/postfixstat/ ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
terrible Опубликовано 6 мая, 2010 · Жалоба С перла то без проблема получаю ответ на snmpwalk, а вот с shell проблемы :( Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
YuryD Опубликовано 7 мая, 2010 (изменено) · Жалоба С перла то без проблема получаю ответ на snmpwalk, а вот с shell проблемы :( C mpd хотите кол-во пользователей взять ? у mpd5 + snmpd можно проще snmpwalk -v 2c -c community router ifNumber - количество активных интерфейсов. Вычтите статические. Изменено 7 мая, 2010 пользователем YuryD Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
terrible Опубликовано 7 мая, 2010 (изменено) · Жалоба Количество забираю, там всё ок, не могу запустить скрипт, который бы заходил в консоль 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. Цель достигнута. Изменено 7 мая, 2010 пользователем terrible Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...