проморгал что вы на perl замутили
то что написал работает с php-agi (в составе есть phpagi-asmanager.php) из под cron
вот пример мониторинга регистраций
Код: Выделить всё
#!/usr/bin/php -q
<?php
date_default_timezone_set('Europe/Moscow');
require_once('/var/lib/asterisk/agi-bin/phpagi-asmanager.php');
$asm = new AGI_AsteriskManager();
if($asm->connect())
{
$devices = $asm->command("sip show registry");
//print_r($devices);
foreach(explode("\n", $devices['data']) as $line)
{
if (preg_match("/^(\S+)\s+\S+\s+\S+\s+\S+\s{1,}(\S+)/i",$line,$match)) {
switch($match[2]){
case "Unregistered" : sendalarm($match[1],$match[2]); break;
case "Rejected" : sendalarm($match[1],$match[2]); break;
case "Timeout" : sendalarm($match[1],$match[2]); break;
case "No" : sendalarm($match[1],$match[2]); break; //No Authentication
case "Unknown" : sendalarm($match[1],$match[2]); break;
}
}
}
$asm->disconnect();
}
function sendalarm($peer='',$status=''){
$message = "Peer: ".$peer." Status: ".$status."\n";
mail("sovsem@pisem.net", "peer registry fail", $message, "From: ast@pisem.net"");
exec("/usr/sbin/asterisk -rx 'sip reload'");
}
?>