arpt.pl #!/usr/local/bin/perl # # arpt.pl -- a script to extract the ARP cache from a router. # #Set behavour $snmpro="ORARO"; # $snmpwalk="/usr/local/bin/snmpwalk -v 1 -c $snmpro"; $snmpget="/usr/local/bin/snmpget -v 1 -c $snmpro"; chomp ($rtr=$ARGV[0]); if ( $rtr eq "" ) {die "$0: Must specify a router \n"}; @iftable=`$snmpwalk $rtr ifDescr`; for $ifnum (@iftable) { chomp (($intno, $intname) = split (/ = /, $ifnum)); $intno=~s/.*ifDescr\.//; $intname=~s/"//gi; $arpint{$intno}=$intname; } printf ("%-22.22s %-10.10s %-25.25s\n", Address, MAC, Interface); @atTable=`$snmpwalk $rtr .1.3.6.1.2.1.3.1.1.1`; for $atnum (@atTable) { chomp (($atip, $atint) = split (/ = /, $atnum)); $atip =~ s/.*atIfIndex\.[0-9]+\.1\.//; $atphys=`$snmpget $rtr atPhysAddress.$atint.1.$atip`; chomp(($foo, $phys) = split(/: /, $atphys)); $phys=~s/ /-/gi; chop ($phys); $phys=~tr/A-Z/a-z/; $int=$arpint{$atint}; printf ("%-15.15s %17.17s %-25.25s\n", $atip, $phys, $int); }