Я как-то уже выкладывал тут скрипт снятия статистик по SIP звонкам с Cisco. Так вот в последнее время скрипт перестал работать корректно. Время от времени выдавал ошибку по недоступности до Cisco из под запуска NetXMS. Проведя трое суток в поисках решений, прибегнул к давно существующему перловому модулю Net::Rsh. (На сайте Cisco есть готовые MIB-ы по SIP статистике, но одни не устанавливаются, а другие не отдают то, что надо). Так что старый дедовский способ по RSH - остается, на мой взгляд, лучший по сей день. Может кому-то пригодится скриптик:
#!/usr/bin/perl
use Net::Rsh;
if ($#ARGV != 1) {
print "usage: $0 host_ip uac|uas\n";
exit;
}
$a=Net::Rsh->new();
$host = $ARGV[0];
$type = uc($ARGV[1]);
$local_user="root";
$remote_user="root";
$cmd="show sip-ua calls | i $type";
@c=$a->rsh($host,$local_user,$remote_user,$cmd);
#@c =~(/calls: (\d+)/);
for ($i=0; $i<scalar(@c); ++$i) {
($k, $v) = @c;
}
$v =~ (/calls: (\d+)/);
unless ($1 != "") {$num = 0;} else {$num = $1;}
print "$num\n";Скрипт вызывается следующей командой
./название_скрипт host_ip uac (статистика по оригинационным звонкам)
или
./название_скрипт host_ip uas (статистика по терминационным звонкам)
В NetXMS в агенте прописывается так:
ExternalParameter = SipOrig(*):/usr/bin/perl /путь_до_скрипта/название_скрипта.pl $1 uas
ExternalParameter = SipAnswer(*):/usr/bin/perl /путь_до_скрипта/название_скрипта.pl $1 uacМожно создать темплейт SIP и создать в нем 2 DCI.
- SipAnswer(%{node_primary_ip})
- SipOrig(%{node_primary_ip})
Origin: NetXMS Agent
И не забываем прописывать в качестве Proxy node адрес машины, на которой стоит NetXMS.
Вот и вся кухня. Надеюсь кому-то окажется полезным.