mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
remove unused file
git-svn-id: http://www.observium.org/svn/observer/trunk@1857 61d68cd4-352d-0410-923a-c4978735b2b8
This commit is contained in:
@@ -1,197 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SNMP class with CDP functionality
|
||||
*
|
||||
* @author Rick Hodger <rick@fuzzi.org.uk>
|
||||
* @version 1.0
|
||||
* @copyright Copyright © 2006, Rick Hodger
|
||||
* @package snmp-cdp
|
||||
* @filesource
|
||||
*/
|
||||
/**
|
||||
* SNMP class with CDP functionality
|
||||
*
|
||||
* Class is named snmp-cdp. Can retreive a list of ports, and use those
|
||||
* to determine if they are connected to a CDP enabled device.
|
||||
* @package snmp-cdp
|
||||
*/
|
||||
|
||||
class snmpCDP {
|
||||
|
||||
var $community = "public";
|
||||
var $host = "";
|
||||
|
||||
/**
|
||||
* Initialises the class.
|
||||
* $snmp = new snmpCDP('device','public');
|
||||
*/
|
||||
|
||||
function snmpCDP($host,$community) {
|
||||
$this->host=$host;
|
||||
$this->community=$community;
|
||||
}
|
||||
|
||||
/**
|
||||
* Identify
|
||||
* Determines if the queried device is made by Cisco or not.
|
||||
* $type = $snmp->identify();
|
||||
* @return string
|
||||
*/
|
||||
function identify() {
|
||||
$ret=snmpget($this->host,$this->community,"SNMPv2-MIB::sysDescr.0");
|
||||
if (substr_count($ret,"Cisco") > 0) {
|
||||
return "cisco";
|
||||
} else {
|
||||
return "unknown";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Location
|
||||
* Returns the location string configured on the device.
|
||||
* $location = $snmp->location();
|
||||
* @return string
|
||||
*/
|
||||
function location() {
|
||||
return snmpget($this->host,$this->community,"SNMPv2-MIB::sysLocation.0");
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to determine if port is up or down from returned SNMP string.
|
||||
* @access private
|
||||
*/
|
||||
function _isitup($text) {
|
||||
$x = substr($text,9);
|
||||
switch($x) {
|
||||
case "up(1)": return true; break;
|
||||
case "down(2)": return false; break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the type of port depending on the returned SNMP string.
|
||||
* @access private
|
||||
*/
|
||||
function _porttype($text) {
|
||||
$x = substr($text,9);
|
||||
switch($x) {
|
||||
case "ethernetCsmacd(6)": return "ethernet"; break;
|
||||
case "propVirtual(53)": return "virtual"; break;
|
||||
case "propPointToPointSerial(22)": return "serial"; break;
|
||||
default: return $text; break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Port List
|
||||
* Returns an array forming a list of the ports on the device, including name, alias and type.
|
||||
* The returned array is indexed by the port index in the SNMP tree.
|
||||
*
|
||||
* $snmp->getports();
|
||||
*
|
||||
* An example of the output:
|
||||
* Array
|
||||
* (
|
||||
* [2] => Array
|
||||
* (
|
||||
* [desc] => GigabitEthernet0/1
|
||||
* [alias] =>
|
||||
* [type] => ethernet
|
||||
* )
|
||||
* )
|
||||
* @return array
|
||||
*/
|
||||
function getports() {
|
||||
$nosint = @snmpget($this->host,$this->community,"IF-MIB::ifNumber.0");
|
||||
$ports = @snmpwalk($this->host,$this->community,"IF-MIB::ifIndex");
|
||||
$results=array();
|
||||
foreach($ports as $port) {
|
||||
$x = substr($port,9);
|
||||
$admin = snmpget($this->host,$this->community,"IF-MIB::ifAdminStatus.$x");
|
||||
if ($this->_isitup($admin)==true) {
|
||||
$desc = substr(snmpget($this->host,$this->community,"IF-MIB::ifDescr.$x"),8);
|
||||
$alias = substr(snmpget($this->host,$this->community,"IF-MIB::ifAlias.$x"),8);
|
||||
$type = $this->_porttype(snmpget($this->host,$this->community,"IF-MIB::ifType.$x"));
|
||||
$results["$x"]=array("desc"=>$desc,"alias"=>$alias,"type"=>$type);
|
||||
}
|
||||
}
|
||||
return $results;
|
||||
}
|
||||
|
||||
/**
|
||||
* Port Status
|
||||
* Returns the status of an individual port. Takes the SNMP index as the parameter.
|
||||
* if ($snmp->portstatus(2)==true) {
|
||||
* echo "Port is up!";
|
||||
* }
|
||||
* @var integer $id
|
||||
* @return bool
|
||||
*/
|
||||
function portstatus($id) {
|
||||
$adminStatus = @snmpget($this->host,$this->community,"IF-MIB::ifAdminStatus.$id");
|
||||
if ($this->_isitup($adminStatus)==true) {
|
||||
$operStatus = @snmpget($this->host,$this->community,"IF-MIB::ifOperStatus.$id");
|
||||
if ($this->_isitup($operStatus)==true) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @access private
|
||||
*/
|
||||
function _walkget($oid) {
|
||||
$ret = snmpwalk($this->host,$this->community,$oid);
|
||||
if (sizeof($ret) > 0) {
|
||||
return $ret[0];
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Explore CDP
|
||||
* When supplied with the current port list from the device, it will determine each ports CDP status.
|
||||
* Returns an array containing the device name and port of the remote SNMP device detected via CDP,
|
||||
* assuming that it has the same community string as the initial device. The returned array is indexed
|
||||
* by the SNMP ports of the initial device.
|
||||
*
|
||||
* $ports = $snmp->getports();
|
||||
* $cdp = $snmp->explore_cdp($ports);
|
||||
*
|
||||
* An example of the output will look like:
|
||||
* Array
|
||||
* (
|
||||
* [2] => Array
|
||||
* (
|
||||
* [host] => second.device.hostname
|
||||
* [port] => FastEthernet0/1
|
||||
* )
|
||||
* )
|
||||
* @var array ports
|
||||
* @return array
|
||||
*/
|
||||
function explore_cdp($ports) {
|
||||
$cdpports=array();
|
||||
foreach($ports as $id => $port) {
|
||||
if ($ret = $this->_walkget("SNMPv2-SMI::enterprises.9.9.23.1.2.1.1.6.$id")) {
|
||||
// this port is connected to another cisco!
|
||||
$remote_id = substr($ret,9,strlen($ret)-10);
|
||||
if ($ret = $this->_walkget("SNMPv2-SMI::enterprises.9.9.23.1.2.1.1.7.$id")) {
|
||||
$remote_port = substr($ret,9,strlen($ret)-10);
|
||||
}
|
||||
#echo "$this->host($port[desc]) is connected to $remote_id($remote_port)\n";
|
||||
$cdpports[$id]=array('host'=>$remote_id,'port'=>$remote_port);
|
||||
}
|
||||
}
|
||||
return $cdpports;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user