EXPECT - cisco show fex mac-address table.expect

From IT-Arts.net
Revision as of 13:07, 26 June 2026 by Admin (talk | contribs) (Created page with "Category:Wiki '''''[https://it-arts.net/index.php/Category:Wiki Return to Wiki Index]''''' <nowiki> #!/usr/bin/expect -f # # USAGE: # ./cisco_show_interfaces_fex_mac-address_table.expect <HOST> '<FEX_ID1 FEX_ID2 FEX_ID3...>' # # Example: # ./cisco_show_interfaces_fex_mac-address_table.expect USA-SW-CLI04 "101 102 103" # # DISABLE OUTPUT BUFFERING fconfigure stdout -buffering none set timeout 10 set HOST [lindex $argv 0] set FEX_ID_LIST [lindex $argv 1] puts "...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)


Return to Wiki Index

#!/usr/bin/expect -f

#
# USAGE:
# ./cisco_show_interfaces_fex_mac-address_table.expect <HOST> '<FEX_ID1 FEX_ID2 FEX_ID3...>'
#
# Example:
# ./cisco_show_interfaces_fex_mac-address_table.expect USA-SW-CLI04 "101 102 103"
#

# DISABLE OUTPUT BUFFERING
fconfigure stdout -buffering none

set timeout 10

set HOST [lindex $argv 0]
set FEX_ID_LIST [lindex $argv 1]

puts "HOST : $HOST"
puts "FEX_ID_LIST : $FEX_ID_LIST"

# SSH CONNECTION
spawn ssh cyconnect@$HOST

# WAIT FOR SWITCH PROMPT
expect "$HOST#"

# PROCESS EACH FEX
foreach FEX $FEX_ID_LIST {

    puts ""
    puts "===== FEX : $FEX ====="

    # GET ENABLED INTERFACES
    send "show interface status fex $FEX | include enabled\r"
    expect "$HOST#"

    set RAW_UP_INTERFACE_LIST $expect_out(buffer)

    # BUILD THE INTERFACE LIST
    set UP_INTERFACE_LIST {}

    foreach line [split $RAW_UP_INTERFACE_LIST "\n"] {

        # REMOVE CARRIAGE RETURNS
        regsub -all {\r} $line "" line

        # MATCH INTERFACE NAME AT BEGINNING OF LINE
        if {[regexp {^(Eth[0-9/]+)} $line -> iface]} {
            lappend UP_INTERFACE_LIST $iface
        }
    }

    puts "Interfaces found:"
    puts $UP_INTERFACE_LIST

    # QUERY MAC ADDRESSES ON EACH INTERFACE
    foreach INTERFACE $UP_INTERFACE_LIST {

        puts "show mac-address interface $INTERFACE"

        send "show mac-address interface $INTERFACE\r"
        expect "$HOST#"

        # PRINT COMMAND OUTPUT
        puts $expect_out(buffer)

        # DON'T SPAM THE SWITCH
        sleep 1
    }
}

# EXIT
send "exit\r"
expect eof

exit 0


Return to Wiki Index