<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://mars.merhot.dk/w/index.php?action=history&amp;feed=atom&amp;title=Cisco_CDP.pl</id>
		<title>Cisco CDP.pl - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://mars.merhot.dk/w/index.php?action=history&amp;feed=atom&amp;title=Cisco_CDP.pl"/>
		<link rel="alternate" type="text/html" href="http://mars.merhot.dk/w/index.php?title=Cisco_CDP.pl&amp;action=history"/>
		<updated>2026-05-14T08:32:58Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.29.0</generator>

	<entry>
		<id>http://mars.merhot.dk/w/index.php?title=Cisco_CDP.pl&amp;diff=7380&amp;oldid=prev</id>
		<title>Heth: New page: &lt;source lang=perl&gt; #!/usr/bin/perl -w use strict; use Net::SNMP; my($error,$session,$seed_oid,$oid_root,$community,$hostname,$seed_ip); my(%done); my(@todo); $done{&quot;0.0.0.0&quot;}=1;   $communi...</title>
		<link rel="alternate" type="text/html" href="http://mars.merhot.dk/w/index.php?title=Cisco_CDP.pl&amp;diff=7380&amp;oldid=prev"/>
				<updated>2009-07-26T14:38:26Z</updated>
		
		<summary type="html">&lt;p&gt;New page: &amp;lt;source lang=perl&amp;gt; #!/usr/bin/perl -w use strict; use Net::SNMP; my($error,$session,$seed_oid,$oid_root,$community,$hostname,$seed_ip); my(%done); my(@todo); $done{&amp;quot;0.0.0.0&amp;quot;}=1;   $communi...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;source lang=perl&amp;gt;&lt;br /&gt;
#!/usr/bin/perl -w&lt;br /&gt;
use strict;&lt;br /&gt;
use Net::SNMP;&lt;br /&gt;
my($error,$session,$seed_oid,$oid_root,$community,$hostname,$seed_ip);&lt;br /&gt;
my(%done);&lt;br /&gt;
my(@todo);&lt;br /&gt;
$done{&amp;quot;0.0.0.0&amp;quot;}=1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$community = &amp;quot;public&amp;quot;;&lt;br /&gt;
@todo=(&amp;quot;192.168.1.1&amp;quot;); #List of possible targets&lt;br /&gt;
$oid_root = &amp;quot;1.3.6.1.4.1.9.9.23.1.2.1.1&amp;quot;;&lt;br /&gt;
$seed_oid = (&amp;quot;$oid_root&amp;quot;.&amp;quot;.3&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
while(@todo){ #Grab a target and go to work&lt;br /&gt;
&lt;br /&gt;
   $hostname= shift(@todo);&lt;br /&gt;
   unless(exists $done{$hostname}){  #Make sure we haven't done this one yet&lt;br /&gt;
&lt;br /&gt;
       print &amp;quot;\n\nCDP Neighbor Details for $hostname\n&amp;quot;;&lt;br /&gt;
       print &amp;quot;-------------------\uffff--------------------\uffff--------------------\uffff--------------------\uffff-------------\n&amp;quot;;&lt;br /&gt;
       print &amp;quot;Neighbor IP                 Name                   Interface                   Type             |\n&amp;quot;;&lt;br /&gt;
       print &amp;quot;-------------------\uffff--------------------\uffff--------------------\uffff--------------------\uffff-------------\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
       $done{$hostname}=1; #Remember that we checked this IP&lt;br /&gt;
&lt;br /&gt;
       #Open SNMP session&lt;br /&gt;
       ($session,$error)=Net::SNMP-&amp;gt;session(Hostname =&amp;gt;$hostname,Community=&amp;gt;$community);&lt;br /&gt;
       return unless($session);&lt;br /&gt;
&lt;br /&gt;
       get_oids($seed_oid); #Get the SNMP info for this target&lt;br /&gt;
&lt;br /&gt;
       $session-&amp;gt;close;&lt;br /&gt;
&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
   #-------------------\uffff--------------------\uffff-------------------&lt;br /&gt;
   #This sub finds out how many neighbors the target has&lt;br /&gt;
   #and determines what oids we need to use to get the info that&lt;br /&gt;
   #we want, then calls other subs to get that info&lt;br /&gt;
   #-------------------\uffff--------------------\uffff-------------------&lt;br /&gt;
   sub get_oids{&lt;br /&gt;
       my($starting_oid , $new_oid , $unique_oid , $result , $crap);&lt;br /&gt;
       my($hex_ip, $ip , $name , $port , $type);&lt;br /&gt;
       $starting_oid = $_[0];&lt;br /&gt;
       $new_oid = $starting_oid ;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
       while(Net::SNMP::oid_context_match($starting_oid,$new_oid)){&lt;br /&gt;
           $result = $session-&amp;gt;get_next_request(($new_oid));&lt;br /&gt;
           return  unless (defined $result);&lt;br /&gt;
           ($new_oid , $crap) = %$result;&lt;br /&gt;
           if (Net::SNMP::oid_context_match($starting_oid,$new_oid)){&lt;br /&gt;
           $unique_oid = $new_oid;&lt;br /&gt;
           $unique_oid =~ s/$starting_oid//g;&lt;br /&gt;
           $hex_ip = (Get_SNMP_Info(&amp;quot;$oid_root&amp;quot;.&amp;quot;.4&amp;quot;.&amp;quot;$unique_oid&amp;quot;));&lt;br /&gt;
           $ip = (Convert_IP($hex_ip));&lt;br /&gt;
           $name = (Get_SNMP_Info(&amp;quot;$oid_root&amp;quot;.&amp;quot;.6&amp;quot;.&amp;quot;$unique_oid&amp;quot;));&lt;br /&gt;
           $port = (Get_SNMP_Info(&amp;quot;$oid_root&amp;quot;.&amp;quot;.7&amp;quot;.&amp;quot;$unique_oid&amp;quot;));&lt;br /&gt;
           $type = (Get_SNMP_Info(&amp;quot;$oid_root&amp;quot;.&amp;quot;.8&amp;quot;.&amp;quot;$unique_oid&amp;quot;));&lt;br /&gt;
           @todo=(@todo,$ip);&lt;br /&gt;
           write;&lt;br /&gt;
           get_oids($new_oid);&lt;br /&gt;
&lt;br /&gt;
           }&lt;br /&gt;
       }&lt;br /&gt;
#Format the report&lt;br /&gt;
format STDOUT =&lt;br /&gt;
@&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; @&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; @&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; @&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; @&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
$hex_ip, $ip,$name,$port,$type&lt;br /&gt;
.&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
       sub Convert_IP{ #This sub converts a hex IP to standard xxx.xxx.xxx.xxx format&lt;br /&gt;
           my($ip , $result , $crap);&lt;br /&gt;
           my($hex1 , $hex2 , $hex3 , $hex4);&lt;br /&gt;
           my($oct1 , $oct2 , $oct3 , $oct4);&lt;br /&gt;
           my($hex_ip) = $_[0] ;&lt;br /&gt;
&lt;br /&gt;
           if (substr($hex_ip,0,1) eq &amp;quot;&amp;quot;){&lt;br /&gt;
               $ip = &amp;quot;0.0.0.0&amp;quot;;&lt;br /&gt;
           }&lt;br /&gt;
           else{&lt;br /&gt;
               $hex_ip =~ s/0x//g;&lt;br /&gt;
               $hex1 = (substr $hex_ip,0,2);&lt;br /&gt;
               $hex2 = (substr $hex_ip,2,2);&lt;br /&gt;
               $hex3 = (substr $hex_ip,4,2);&lt;br /&gt;
               $hex4 = (substr $hex_ip,6,2);&lt;br /&gt;
&lt;br /&gt;
               $oct1 = hex($hex1);&lt;br /&gt;
               $oct2 = hex($hex2);&lt;br /&gt;
               $oct3 = hex($hex3);&lt;br /&gt;
               $oct4 = hex($hex4);&lt;br /&gt;
               $ip = (&amp;quot;$oct1.$oct2.$oct3.$oct4&amp;quot;);&lt;br /&gt;
           }&lt;br /&gt;
           return $ip;&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
       sub Get_SNMP_Info{ #This sub gets the value of an oid&lt;br /&gt;
&lt;br /&gt;
           my($crap , $value , $result);&lt;br /&gt;
           my($oid) = $_[0];&lt;br /&gt;
           $result = $session-&amp;gt;get_request(&amp;quot;$oid&amp;quot;);&lt;br /&gt;
           #return unless (defined $result);&lt;br /&gt;
           ($crap , $value) = %$result;&lt;br /&gt;
           return $value;&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[Category:Perl]]&lt;/div&gt;</summary>
		<author><name>Heth</name></author>	</entry>

	</feed>