From 2e581828b6d9dcadcc94030c74615e4dbfe9520e Mon Sep 17 00:00:00 2001 From: Adam Amstrong Date: Sun, 11 Jul 2010 20:12:24 +0000 Subject: [PATCH] recognise some new OSes, add an image for dlink, move sysObjectId polling to be global for os detection git-svn-id: http://www.observium.org/svn/observer/trunk@1345 61d68cd4-352d-0410-923a-c4978735b2b8 --- addhost.php | 16 +++++++++------- html/images/os/dlink.png | Bin 0 -> 997 bytes includes/functions.php | 6 ++++-- includes/osdiscovery/discover-airport.php | 9 +++++++++ includes/osdiscovery/discover-allied.php | 1 - includes/osdiscovery/discover-dlink.inc.php | 10 ++++++++++ includes/osdiscovery/discover-extremeware.php | 9 +++++++++ includes/osdiscovery/discover-junos.php | 1 - includes/osdiscovery/discover-junose.php | 1 - includes/osdiscovery/discover-zywall.php | 10 ++++++++++ 10 files changed, 51 insertions(+), 12 deletions(-) create mode 100644 html/images/os/dlink.png create mode 100644 includes/osdiscovery/discover-airport.php create mode 100644 includes/osdiscovery/discover-dlink.inc.php create mode 100755 includes/osdiscovery/discover-extremeware.php create mode 100644 includes/osdiscovery/discover-zywall.php diff --git a/addhost.php b/addhost.php index 7e7bd2a9ad..b33cd60583 100755 --- a/addhost.php +++ b/addhost.php @@ -18,17 +18,19 @@ if($argv[1]) { if (!$community) $community = $config['community']; list($hostshort) = explode(".", $host); - if ( isDomainResolves($argv[1])){ - if ( isPingable($argv[1])) { - if ( mysql_result(mysql_query("SELECT COUNT(*) FROM `devices` WHERE `hostname` = '".mres($host)."'"), 0) == '0' ) { + if ( mysql_result(mysql_query("SELECT COUNT(*) FROM `devices` WHERE `hostname` = '".mres($host)."'"), 0) == '0' ) { + if ( isDomainResolves($argv[1])){ + if ( isPingable($argv[1])) { + if ( isSNMPable($argv[1], $community, $snmpver, $port)) { $snmphost = trim(str_replace("\"", "", shell_exec($config['snmpget'] ." -m SNMPv2-MIB -Oqv -$snmpver -c $community $host:$port sysName.0"))); - if ($snmphost == "" || $snmphost && ($snmphost == $host || $hostshort = $host)) { + if ($snmphost != "" || $snmphost && ($snmphost == $host || $hostshort = $host)) { $return = createHost ($host, $community, $snmpver, $port); if($return) { echo($return . "\n"); } else { echo("Adding $host failed\n"); } } else { echo("Given hostname does not match SNMP-read hostname!\n"); } - } else { echo("Already got host $host\n"); } - } else { echo("Could not ping $host\n"); } - } else { echo("Could not resolve $host\n"); } + } else { echo("Could not reach $host with SNMP\n"); } + } else { echo("Could not ping $host\n"); } + } else { echo("Could not resolve $host\n"); } + } else { echo("Already got host $host\n"); } } else { echo("Add Host Tool\nUsage: ./addhost.php [community] [v1|v2c] [port]\n"); } ?> diff --git a/html/images/os/dlink.png b/html/images/os/dlink.png new file mode 100644 index 0000000000000000000000000000000000000000..93a8338ac28bd9918e3f37f1d4aafd7970c45ace GIT binary patch literal 997 zcmVPx#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy8FWQhbW?9;ba!ELWdKlNX>N2bPDNB8b~7$DE;UJt{NMlp13pPa zK~z{r?b1n1Q$ZL9a1dDn2#Q)sg;Jm(R9aDqLO~5ilmem##VRdb-`3YwkkSpx(&d%H zgD%iFU}ZaqXf&h&P4wj1qk7Q9=+VT3i5KI+I6@7C3s*0`InKA_Kfg>u0()2iR)7^? z1^!oo$4{Sd;%`6GdOKIFwZ1B_gU`i|;3vMt{js8-d3UmBv28of>1NGMzJdao_!!7l zS%K6v(6CW2Y{BwM(P4050F>^8d9!cK$u|H{ch|qQbAEBry!hxrZhR(}prX4m0Lx9& zD^lmoDXwhjdloYJrP=+kd~>PEPKh`-s935l0y!wGByeG$Y96jaDJoyQXv_9RfD_Qt2@oo3WNV;t7D;|jP%)yFz>u<;#uiMgC9*s zBT#ggp-&lI5&`OY--z3nM#Fu24M5VN`I4{M$@%H zD7G!V*{`C$mN=&0US?vcTLOG79o=P!Kprt14^W^m)9LHOWhSs{2`ovJ)UvF@eV@m< z?gR-W1G(LS4&&UDloRUSHU3q+H4T}8hw+f2p=;Kgshxo()_cNTb;z-Fbr3dtmilYE z!e}x+33CYWGYc7q0+JbRbU#Rp2RMFBm2pVpT1z4rm~RL_=O~?R+|H5T894Jx)XPXV zQ=T_iMR_{vL$ZDv@<_&0M$#T0;rl2ehr6?pFg$7l!*$(LAZ4Ap);%vxJR>`nrln#1 z`0_*zO565mLa@4bE_NF8yvRn!;L$EWrSgTu2~7&TzFcks1#%1EYkB}5?*T%ii%z}O zU%mZP)vIlTJaiBo=^OVEzzVPetN<(U&jkJe`(ZW2 TCEde;00000NkvXXu0mjf<-W7{ literal 0 HcmV?d00001 diff --git a/includes/functions.php b/includes/functions.php index d0afd06e78..8429a29049 100755 --- a/includes/functions.php +++ b/includes/functions.php @@ -99,8 +99,10 @@ function getHostOS($device) { global $config; - $sysDescr_cmd = $config['snmpget']." -m SNMPv2-MIB -O qv -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'].":".$device['port'] . " sysDescr.0"; - $sysDescr = str_replace("\"", "", trim(shell_exec($sysDescr_cmd))); + $sysDescr = snmp_get ($device, "sysDescr.0", "-Ovq"); + $sysObjectId = snmp_get ($device, "sysObjectID.0", "-Ovqn"); + + $dir_handle = @opendir($config['install_dir'] . "/includes/osdiscovery") or die("Unable to open $path"); while ($file = readdir($dir_handle)) { diff --git a/includes/osdiscovery/discover-airport.php b/includes/osdiscovery/discover-airport.php new file mode 100644 index 0000000000..64f2006df7 --- /dev/null +++ b/includes/osdiscovery/discover-airport.php @@ -0,0 +1,9 @@ + diff --git a/includes/osdiscovery/discover-allied.php b/includes/osdiscovery/discover-allied.php index 6421e9206d..d6b14b1472 100755 --- a/includes/osdiscovery/discover-allied.php +++ b/includes/osdiscovery/discover-allied.php @@ -2,7 +2,6 @@ if(!$os) { - $sysObjectId = shell_exec($config['snmpget'] . " -Ovqn -".$device['snmpver']." -c ". $device['community'] ." ". $device['hostname'].":".$device['port'] ." sysObjectID.0"); if(strstr($sysObjectId, ".1.3.6.1.4.1.207")) { $os = "allied"; } } diff --git a/includes/osdiscovery/discover-dlink.inc.php b/includes/osdiscovery/discover-dlink.inc.php new file mode 100644 index 0000000000..08427e8a69 --- /dev/null +++ b/includes/osdiscovery/discover-dlink.inc.php @@ -0,0 +1,10 @@ + diff --git a/includes/osdiscovery/discover-extremeware.php b/includes/osdiscovery/discover-extremeware.php new file mode 100755 index 0000000000..bc356f18c3 --- /dev/null +++ b/includes/osdiscovery/discover-extremeware.php @@ -0,0 +1,9 @@ + diff --git a/includes/osdiscovery/discover-junos.php b/includes/osdiscovery/discover-junos.php index fef8c26c9b..20946de6d3 100755 --- a/includes/osdiscovery/discover-junos.php +++ b/includes/osdiscovery/discover-junos.php @@ -2,7 +2,6 @@ if(!$os) { - $sysObjectId = shell_exec($config['snmpget'] . " -Ovqn -".$device['snmpver']." -c ". $device['community'] ." ". $device['hostname'].":".$device['port'] ." sysObjectID.0"); if(strstr($sysObjectId, ".1.3.6.1.4.1.2636")) { $os = "junos"; } } diff --git a/includes/osdiscovery/discover-junose.php b/includes/osdiscovery/discover-junose.php index 2f2b7d42a4..7a4f8f542f 100755 --- a/includes/osdiscovery/discover-junose.php +++ b/includes/osdiscovery/discover-junose.php @@ -2,7 +2,6 @@ if(!$os) { - $sysObjectId = shell_exec($config['snmpget'] . " -Ovqn -".$device['snmpver']." -c ". $device['community'] ." ". $device['hostname'].":".$device['port'] ." sysObjectID.0"); if(strstr($sysObjectId, ".1.3.6.1.4.1.4874")) { $os = "junose"; } } diff --git a/includes/osdiscovery/discover-zywall.php b/includes/osdiscovery/discover-zywall.php new file mode 100644 index 0000000000..7ae44e51d9 --- /dev/null +++ b/includes/osdiscovery/discover-zywall.php @@ -0,0 +1,10 @@ +