No way I want to make the same mistakes again
To avoid stepping on the same rake again and to fix the issue described in this post, I came out with a simple expect script to save current configuration of Qlogic Sanbox switches.
#!/usr/local/bin/expect -f
set switches "switch1 switch2"
set user {user}
set pass {pass}
set ftp_user {ftp_user}
set ftp_pass {ftp_pass}
set timeout 10
log_user 0
set prompt "(%|#|\\$) $"
catch {set prompt $env(EXPECT_PROMPT)}
set sec [clock seconds]
set date [clock format $sec -format %d%m%Y]
set back [clock add $sec -7 days]
set bdate [clock format $back -format %d%m%Y]
for {set x 0} {$x<[llength $switches]} {incr x} {
set current_switch [lindex $switches $x]
spawn telnet $current_switch
expect {
timeout {puts "timeout while connecting to $host"; exit 1}
"login:"
}
send "$user\r"
expect {
timeout {puts "timed out waiting for the password prompt"; exit 1}
"Password:"
}
send "$pass\r"
expect {
timeout {puts "timed out after login"; exit 1}
"#>"
}
send "admin start\r"
expect {
timeout {puts "timed out waiting for admin mode"; exit 1}
"(admin) #>"
}
send "config backup\r"
expect {
"(admin) #>"
}
send "admin end\r"
expect {
"#>"
}
send "quit\r"
spawn ftp sanbox4
expect {
timeout {puts "timed out waiting for ftp login request"; exit 1}
"Name"
}
send "$ftp_user\r"
expect {
timeout {puts "timed out waiting fro ftp password request"; exit 1}
"Password:"
}
send "$ftp_pass\r"
expect {
timeout {puts "timed out waiting for ftp prompt"; exit 1}
"ftp>"
}
send "get configdata /pth_to_backup_directory/configdata_$current_switch-$date\r"
expect "ftp>"
send "quit\r"
if {[file exists /path_to_backup_directory/configdata_$current_switch-$bdate]} {
exec /usr/bin/rm /path_to_backup_directory/configdata_$current_switch-$bdate
}
}

on August 23, 2015 at 4:38 pm
·