Перейти к содержимому
Калькуляторы

расширение 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-ами, покажите пожалуйста, а я сам дальше допилю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Изменено пользователем YuryD

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Изменено пользователем terrible

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.