#!/usr/bin/php
<?php

include("includes/defaults.inc.php");
include("config.php");
include("includes/functions.php");

$device_query = mysql_query("SELECT * FROM `devices` WHERE `device_id` LIKE '%" . $argv[1] . "' AND disabled = '0' ORDER BY `device_id` DESC");
while ($device = mysql_fetch_array($device_query)) {

   $id = $device['device_id'];
   $hostname = $device['hostname'];
   $old_status = $device['status'];
   $community = $device['community'];
   $snmpver = $device['snmpver'];
   $port = $device['port'];

   echo("$hostname ");

   $status = shell_exec($config['fping'] . " $hostname | cut -d ' ' -f 3");
   $status = trim($status);

   if(strstr($status, "alive")) {
     $pos = shell_exec($config['snmpget'] . " -m SNMPv2-MIB -$snmpver -c $community -t 1 $hostname:$port sysDescr.0");
     if($pos == '') { 
       $status='0';
     } else { 
       $status='1'; 
     }
   } else {
     $status='0';
   }


   if($status == '1') {
     echo("Up\n");
   } else {
     echo("Down\n");
   }

   if($status != $device['status']) {

     mysql_query("UPDATE `devices` SET `status`= '$status' WHERE `device_id` = '" . $device['device_id'] . "'");
     if ($status == '1') { 
       $stat = "Up"; 
       mysql_query("INSERT INTO alerts (importance, device_id, message) VALUES ('0', '" . $device['device_id'] . "', 'Device is up\n')");
       if($config['alerts']['email']['enable'])
       {
         notify($device, "Device Up: " . $device['hostname'], "Device Up: " . $device['hostname'] . " at " . date($config['timestamp_format']));
       }
     } else {
       $stat = "Down"; 
       mysql_query("INSERT INTO alerts (importance, device_id, message) VALUES ('9', '" . $device['device_id'] . "', 'Device is down\n')");
       if($config['alerts']['email']['enable'])
       {
         notify($device, "Device Down: " . $device['hostname'], "Device Down: " . $device['hostname'] . " at " . date($config['timestamp_format']));
       }
     }
     eventlog("Device status changed to $stat", $device['device_id']);
     echo("Status Changed!\n");
   }
}
?>
