Revize 74a7dbca
Přidáno uživatelem Michal Kliment před více než 9 roky(ů)
application/libraries/snmp/Signamax_Snmp.php | ||
---|---|---|
try
|
||
{
|
||
$this->startErrorHandler();
|
||
snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
|
||
$row = snmp2_get(
|
||
$device_ip, $this->comunity, 'iso.3.6.1.2.1.1.5.0',
|
||
$this->timeout, $this->retries
|
||
... | ... | |
return FALSE;
|
||
}
|
||
|
||
// parse result
|
||
$matches = array();
|
||
|
||
if (preg_match('/STRING: "?([^"]*)"?/', $row, $matches) > 0)
|
||
{
|
||
return ($matches[1] == '065-7851' || $matches[1] == '300-7851');
|
||
}
|
||
else
|
||
{
|
||
return FALSE;
|
||
}
|
||
return ($row == '065-7851' || $row == '300-7851');
|
||
}
|
||
|
||
/**
|
||
... | ... | |
|
||
// obtain whole ARP table
|
||
$this->startErrorHandler();
|
||
snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
|
||
$arp_table = snmp2_real_walk(
|
||
$this->deviceIp, $this->comunity, 'iso.3.6.1.2.1.17.7.1.2.2.1.2',
|
||
$this->timeout, $this->retries
|
||
... | ... | |
}
|
||
}
|
||
|
||
}
|
||
/**
|
||
* Obtain names of all network interfaces of device
|
||
*
|
||
* @return array Network interfaces of device
|
||
* @throws Exception On SNMP error or wrong SNMP response
|
||
*/
|
||
public function getIfaces()
|
||
{
|
||
return array();
|
||
}
|
||
|
||
/**
|
||
* Obtain current state of device's ports
|
||
*
|
||
* @return array Current states of all ports
|
||
* @throws Exception On SNMP error or wrong SNMP response
|
||
*/
|
||
public function getPortStates()
|
||
{
|
||
$this->startErrorHandler();
|
||
snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
|
||
$port_states = snmp2_real_walk(
|
||
$this->deviceIp, $this->comunity,
|
||
'iso.3.6.1.2.1.2.2.1.8',
|
||
$this->timeout, $this->retries
|
||
);
|
||
$this->stopErrorHandler();
|
||
|
||
$states = array();
|
||
foreach ($port_states as $key => $value)
|
||
{
|
||
$pieces = explode('.', $key);
|
||
|
||
$port_nr = array_pop($pieces);
|
||
|
||
$states[$port_nr] = $value == 1 ? 1 : 0;
|
||
}
|
||
|
||
return $states;
|
||
}
|
||
|
||
/**
|
||
* Obtain ARP table of device
|
||
*
|
||
* @return array Whole ARP table from device
|
||
* @throws Exception On SNMP error or wrong SNMP response
|
||
*/
|
||
public function getARPTable()
|
||
{
|
||
return array();
|
||
}
|
||
|
||
/**
|
||
* Obtain DHCP leases of device
|
||
*
|
||
* @return array All DHCP leases
|
||
* @throws Exception On SNMP error or wrong SNMP response
|
||
*/
|
||
public function getDHCPLeases()
|
||
{
|
||
return array();
|
||
}
|
||
|
||
/**
|
||
* Obtain device's hostname from DHCP leases of device
|
||
*
|
||
* @param string $device_ip IP address to which we will search for hostname
|
||
* @return string Hostname for given IP address
|
||
* @throws Exception On SNMP error or wrong SNMP response
|
||
* @throws InvalidArgumentException On wrong IP address
|
||
*/
|
||
public function getDHCPHostnameOf($device_ip)
|
||
{
|
||
return FALSE;
|
||
}
|
||
|
||
/**
|
||
* Obtain wireless info of device
|
||
*
|
||
* @return array Current wireless info
|
||
* @throws Exception On SNMP error or wrong SNMP response
|
||
*/
|
||
public function getWirelessInfo()
|
||
{
|
||
return array();
|
||
}
|
||
|
||
/**
|
||
* Obtain MAC table from device
|
||
*
|
||
* @return array Whole MAC table
|
||
* @throws Exception On SNMP error or wrong SNMP response
|
||
*/
|
||
public function getMacTable()
|
||
{
|
||
$this->startErrorHandler();
|
||
snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
|
||
$mac_table = snmp2_real_walk(
|
||
$this->deviceIp, $this->comunity,
|
||
'iso.3.6.1.2.1.17.4.3.1.2',
|
||
$this->timeout, $this->retries
|
||
);
|
||
$this->stopErrorHandler();
|
||
|
||
$items = array();
|
||
$ports = array();
|
||
foreach ($mac_table as $key => $value)
|
||
{
|
||
$pieces = explode('.', $key);
|
||
|
||
$item = new stdClass();
|
||
|
||
$item->port_nr = $value;
|
||
|
||
$i = implode('.', array_slice($pieces, -6));
|
||
|
||
$item->mac_address = network::dec2mac($i);
|
||
|
||
$items[] = $item;
|
||
$ports[] = $value;
|
||
}
|
||
|
||
array_multisort($ports, $items);
|
||
|
||
return $items;
|
||
}
|
||
|
||
}
|
Také k dispozici: Unified diff
Merge from SVN branch 1.2.