Jump to content

Recommended Posts

Posted

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

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

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

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

Edited by YuryD
Posted (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 by terrible

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.