2008-03-22 23:09:35 +00:00
#!/usr/bin/php
< ? php
include ( " config.php " );
include ( " includes/functions.php " );
$start = utime ();
### Observer Device Discovery
echo ( " Observer v " . $config [ 'version' ] . " Discovery \n \n " );
2008-03-23 21:32:54 +00:00
if ( $argv [ 1 ] == " --device " && $argv [ 2 ]) {
$where = " AND `device_id` = ' " . $argv [ 2 ] . " ' " ;
} elseif ( $argv [ 1 ] == " --os " ) {
$where = " AND `os` = ' " . $argv [ 2 ] . " ' " ;
} elseif ( $argv [ 1 ] == " --odd " ) {
$where = " AND MOD(device_id,2) = 1 " ;
} elseif ( $argv [ 1 ] == " --even " ) {
$where = " AND MOD(device_id,2) = 0 " ;
} elseif ( $argv [ 1 ] == " --all " ) {
$where = " " ;
2009-03-25 14:54:21 +00:00
} elseif ( $argv [ 1 ] == " --forced " ) {
2009-03-25 15:25:58 +00:00
echo ( " Doing forced discoveries \n " );
2009-03-25 14:54:21 +00:00
$sql = mysql_query ( " SELECT * FROM devices_attribs AS A, `devices` AS D WHERE A.attrib_type = 'discover' AND A.device_id = D.device_id AND D.ignore = '0' AND D.disabled = '0' " );
while ( $device = mysql_fetch_array ( $sql )){
2009-03-25 15:25:58 +00:00
echo ( shell_exec ( " ./discovery.php --device " . $device [ 'device_id' ]));
2009-03-25 14:54:21 +00:00
}
exit ;
2008-03-23 21:32:54 +00:00
} else {
echo ( " --device <device id> Poll single device \n " );
echo ( " --os <os string> Poll all devices of a given OS \n " );
echo ( " --all Poll all devices \n \n " );
echo ( " No polling type specified! \n " );
exit ;
}
2008-03-22 23:09:35 +00:00
$devices_polled = 0 ;
2008-03-31 13:08:17 +00:00
$device_query = mysql_query ( " SELECT * FROM `devices` WHERE status = '1' $where ORDER BY device_id DESC " );
2008-03-22 23:09:35 +00:00
while ( $device = mysql_fetch_array ( $device_query )) {
echo ( $device [ 'hostname' ] . " \n " );
## Discover Interfaces
include ( " includes/discovery/interfaces.php " );
2008-11-03 17:09:38 +00:00
## Discover IPv4 Addresses
2008-03-22 23:09:35 +00:00
include ( " includes/discovery/ipaddresses.php " );
2008-11-03 17:09:38 +00:00
## Discovery IPv6 Addresses
include ( " includes/discovery/ipv6-addresses.php " );
2008-03-22 23:09:35 +00:00
## Discover Temperatures
include ( " includes/discovery/temperatures.php " );
2008-10-30 22:14:30 +00:00
if ( $device [ 'os' ] == " Linux " || $device [ 'os' ] == " FreeBSD " ) {
2008-03-22 23:09:35 +00:00
include ( " includes/discovery/storage.php " );
}
2008-04-03 19:04:24 +00:00
if ( $device [ 'os' ] == " Netscreen " ) {
}
2008-12-09 13:55:41 +00:00
if ( $device [ 'os' ] == " IOS " || $device [ 'os' ] == " IOS XE " ) {
2008-03-22 23:09:35 +00:00
include ( " includes/discovery/cisco-vlans.php " );
include ( " includes/discovery/cisco-physical.php " );
include ( " includes/discovery/bgp-peers.php " );
2008-10-28 18:25:53 +00:00
include ( " includes/discovery/cisco-pw.php " );
2008-10-28 22:06:00 +00:00
include ( " includes/discovery/cisco-vrf.php " );
2008-03-22 23:09:35 +00:00
}
echo ( " \n " ); $devices_polled ++ ;
2009-03-25 14:54:21 +00:00
mysql_query ( " DELETE FROM `devices_attribs` WHERE `device_id` = ' " . $device [ 'device_id' ] . " ' AND `attrib_type` = 'discover' " );
2008-03-22 23:09:35 +00:00
}
$end = utime (); $run = $end - $start ;
$proctime = substr ( $run , 0 , 5 );
echo ( " $devices_polled devices polled in $proctime secs \n " );
?>