From Internetworkpro
| This page or section provides device configuration instructions
Please note that the information on this page has not been checked for accuracy and is not intended as a replacement to documentation. Please ensure you understand your desired objectives before attempting to apply any examples listed. See more examples at Category:Configuration
|
proc get_shversion {} {
puts "|---------------------|"
puts "| Router information |"
puts "|---------------------|"
puts ""
set sh_version_out [ exec "show version\n"]
# Get device name
set devicename [regexp -all -nocase -line -inline {^[[:graph:]]{1,}[[:space:]]uptime+} $sh_version_out]
regsub -all {.uptime} $devicename {} devicename
set devicename [trim_embraces $devicename]
puts "Device Name: $devicename"
# Get Model name
set modelname [regexp -all -nocase -line -inline {^[[:graph:]]{1,}[[:space:]][[:graph:]]{1,}[[:space:]]\(+} $sh_version_out]
regsub -all {[[:space:]]\(} $modelname {} modelname
set modelname [trim_embraces $modelname]
puts "Model Name: $modelname"
# Get IOS version
set iosversion [regexp -nocase -line -inline {Version[[:space:]][[:graph:]]{1,}} $sh_version_out]
regsub -all {.Version} $iosversion {} iosversion
regsub -all {\,} $iosversion {} iosversion
set iosversion [trim_embraces $iosversion]
puts "IOS Version: $iosversion"
}
proc get_ifs {} {
puts "|---------------------|"
puts "| IP interfaces |"
puts "|--------------------------------------|"
puts "| Interface | IP Address | MAC Address |"
puts "|--------------------------------------|"
set sh_int_brief_out [ exec "show ip interface brief\n"]
# Get IP interfaces
set ifnames [regexp -all -nocase -line -inline {^[[:graph:]]{1,}[[:space:]]{1,}[[:graph:]]{1,}[[:space:]]+} $sh_int_brief_out]
regsub {Interface} $ifnames {} ifnames
regsub {IP-Address} $ifnames {} ifnames
set ifnames [trim_embraces $ifnames]
regsub -all {unassigned} $ifnames {no-IP-address} ifnames
for {set i 0} { $i < [llength $ifnames]} { incr i 2} {
if { [lindex $ifnames $i] != "NVI0" } {
set sh_mac_addresses [ exec "show interface [lindex $ifnames $i] | include bia"]
set mac_adresses [regexp -all -nocase -line -inline {bia[[:space:]].............} $sh_mac_addresses]
regsub {bia } $mac_adresses {} mac_adresses
set mac_adresses [trim_embraces $mac_adresses]
puts "[lindex $ifnames $i] [lindex $ifnames [expr 1+$i]] $mac_adresses"
}
}
}
proc get_cdp {} {
puts "|----------------------------|"
puts "| Cisco Discovery Protocol |"
puts "|----------------------------|"
puts ""
# Get devices list
set sh_cdp_devices_list [ exec "show cdp neighbor\n"]
puts "$sh_cdp_devices_list"
}
proc get_routingprotocols {} {
puts "|---------------------|"
puts "| Routing Protocols |"
puts "|---------------------|"
puts ""
set sh_ip_protocols_list [ exec "show ip protocols summary\n"]
# Get Protocols list
set protocols [regexp -all -nocase -line -inline {^[[:digit:]][[:space:]]{1,}[[:alpha:]]{1,}} $sh_ip_protocols_list]
regsub {connected} $protocols {} protocols
regsub {static} $protocols {} protocols
regsub -all {[[:digit:]][[:space:]]{1,}} $protocols {} protocols
set protocols [trim_embraces $protocols]
puts "$protocols"
}
proc get_routing_table {} {
puts "|---------------------|"
puts "| IP Routing Table |"
puts "|---------------------|"
puts ""
set sh_ip_route [ exec "show ip route\n"]
# Get IP routing table
set routetable [regexp -all -nocase -line -inline {^[CSRMBDEOINisLUoP](A|a|X|u|1|2|\*|[[:space:]]{1,}).{1,}} $sh_ip_route]
set routetable [trim_embraces $routetable]
puts "$routetable"
}
proc trim_embraces {panther} {
regsub -all {\{} $panther {} panther
regsub -all {\}} $panther {} panther
return $panther
}
puts "Script version 0.1 by pello"
puts "This script can be used to discover network configuration"
puts ""
eval get_shversion
puts ""
eval get_ifs
puts ""
eval get_cdp
puts ""
eval get_routingprotocols
puts ""
eval get_routing_table