2010-09-03 18:26:59 +00:00
|
|
|
#!/usr/bin/env php
|
2009-09-07 11:07:59 +00:00
|
|
|
<?php
|
2008-03-12 20:01:46 +00:00
|
|
|
|
2010-02-27 14:44:38 +00:00
|
|
|
include("includes/defaults.inc.php");
|
2011-03-16 09:29:46 +00:00
|
|
|
include("config.php");
|
2008-03-19 19:16:16 +00:00
|
|
|
include("includes/functions.php");
|
2007-04-03 14:10:23 +00:00
|
|
|
|
2011-03-14 18:53:48 +00:00
|
|
|
if (isset($argv[1]) && $argv[1])
|
2011-03-16 09:29:46 +00:00
|
|
|
{
|
2011-03-23 09:54:56 +00:00
|
|
|
$host = strtolower($argv[1]);
|
|
|
|
$community = $argv[2];
|
|
|
|
$snmpver = strtolower($argv[3]);
|
2011-03-14 18:56:26 +00:00
|
|
|
|
2011-03-23 09:54:56 +00:00
|
|
|
if (is_numeric($argv[4]))
|
|
|
|
{
|
|
|
|
$port = $argv[4];
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
$port = 161;
|
|
|
|
}
|
2009-02-02 16:00:11 +00:00
|
|
|
|
2011-03-23 09:54:56 +00:00
|
|
|
if (@!$argv[5])
|
|
|
|
{
|
|
|
|
$transport = 'udp';
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
$transport = $argv[5];
|
|
|
|
}
|
2011-03-15 16:12:44 +00:00
|
|
|
|
2011-03-23 09:54:56 +00:00
|
|
|
if (!$snmpver) $snmpver = "v2c";
|
2011-03-16 14:23:38 +00:00
|
|
|
|
2011-03-23 09:54:56 +00:00
|
|
|
if ($community)
|
|
|
|
{
|
|
|
|
unset($config['snmp']['community']);
|
|
|
|
$config['snmp']['community'][] = $community;
|
|
|
|
}
|
2011-03-15 16:12:44 +00:00
|
|
|
|
2011-03-23 09:54:56 +00:00
|
|
|
list($hostshort) = explode(".", $host);
|
2011-03-27 10:21:19 +00:00
|
|
|
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `devices` WHERE `hostname` = '".mres($host)."'"), 0) == '0')
|
2011-03-23 09:54:56 +00:00
|
|
|
{
|
|
|
|
if (isDomainResolves($argv[1]))
|
2011-03-14 18:56:26 +00:00
|
|
|
{
|
2011-03-23 09:54:56 +00:00
|
|
|
if (isPingable($argv[1]))
|
|
|
|
{
|
|
|
|
$added = 0;
|
|
|
|
|
|
|
|
foreach ($config['snmp']['community'] as $community)
|
2011-03-19 10:18:45 +00:00
|
|
|
{
|
2011-03-23 09:54:56 +00:00
|
|
|
$device = deviceArray($host, $community, $snmpver, $port, $transport);
|
2011-03-22 20:27:39 +00:00
|
|
|
|
2011-03-23 09:54:56 +00:00
|
|
|
if (isSNMPable($device))
|
|
|
|
{
|
|
|
|
$snmphost = snmp_get($device, "sysName.0", "-Oqv", "SNMPv2-MIB");
|
2011-03-22 20:27:39 +00:00
|
|
|
|
2011-03-23 09:54:56 +00:00
|
|
|
if ($snmphost == "" || ($snmphost && ($snmphost == $host || $hostshort = $host)))
|
|
|
|
{
|
|
|
|
$added = createHost ($host, $community, $snmpver, $port, $transport);
|
|
|
|
if($added) { echo($added . "\n"); break; }
|
2011-03-22 20:27:39 +00:00
|
|
|
|
2011-03-23 09:54:56 +00:00
|
|
|
} else { echo("Given hostname does not match SNMP-read hostname ($snmphost)!\n"); }
|
|
|
|
}
|
|
|
|
}
|
2011-03-16 14:23:38 +00:00
|
|
|
|
2011-03-23 09:54:56 +00:00
|
|
|
if (!$added) { echo("Could not reach $host with given SNMP community\n"); }
|
|
|
|
} else { echo("Could not ping $host\n"); }
|
|
|
|
} else { echo("Could not resolve $host\n"); }
|
|
|
|
} else { echo("Already got host $host\n"); }
|
2011-03-16 00:50:17 +00:00
|
|
|
} else { echo("Add Host Tool\nUsage: ./addhost.php <hostname> [community] [v1|v2c] [port] [" . join("|",$config['snmp']['transports']) . "]\n"); }
|
2007-04-03 14:10:23 +00:00
|
|
|
|
2011-03-23 09:54:56 +00:00
|
|
|
?>
|