#!/usr/bin/expect -f set ip [lindex $argv 0] set pass [lindex $argv 1] set enable [lindex $argv 2] set force_conservative 0 ;# set to 1 to force conservative mode even if ;# script wasn't run conservatively originally if {$force_conservative} { set send_slow {1 .1} proc send {ignore arg} { sleep .1 exp_send -s -- $arg } } # # 2) differing output - Some programs produce different output each time # they run. The "date" command is an obvious example. Another is # ftp, if it produces throughput statistics at the end of a file # transfer. If this causes a problem, delete these patterns or replace # them with wildcards. An alternative is to use the -p flag (for # "prompt") which makes Expect only look for the last line of output # (i.e., the prompt). The -P flag allows you to define a character to # toggle this mode off and on. # # Read the man page for more info. # # -Don set timeout -1 spawn $env(SHELL) match_max 100000 send -- "ssh pix@$ip\r" expect "'s password: " send -- "$pass\r" expect "> " send -- "enable\r" expect "enable\r Password: " send -- "$enable\r" expect "# " send -- "terminal pager 0\r" expect "# " send -- "show conn\r" expect "# " send -- "exit\r"