Jump to content
Калькуляторы

расширение snmpd с помощью shell никак не пойму как это делать, нужен snmpwalk

Прошу помощи: на фряхе поднял сервисы, хочу их мониторить через 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-ами, покажите пожалуйста, а я сам дальше допилю.

Share this post


Link to post
Share on other sites

С перла то без проблема получаю ответ на snmpwalk, а вот с shell проблемы :(

Share this post


Link to post
Share on other sites
С перла то без проблема получаю ответ на snmpwalk, а вот с shell проблемы :(

C mpd хотите кол-во пользователей взять ? у mpd5 + snmpd можно проще

snmpwalk -v 2c -c community router ifNumber - количество активных интерфейсов. Вычтите статические.

Edited by YuryD

Share this post


Link to post
Share on other sites

Количество забираю, там всё ок, не могу запустить скрипт, который бы заходил в консоль 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 by terrible

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this