HomePage » GeneralUnix » UnixExpect
expect scripts
learn by examples:
#!/usr/bin/expect set timeout 3 spawn /usr/bin/ssh -C root@[lrange $argv 0 0] "[lrange $argv 2 2]" expect "(yes/no)?" send "yes " expect "password:" send [lrange $argv 1 1] send " " #expect -re "(#$%)" #interact
Enter interact mode on error
#!/usr/bin/expect -f
set timeout 30
set log [open oper-restart.log a+]
set server [lindex $argv 0]
set login [lindex $argv 1]
set pass [lindex $argv 2]
set cmd [lindex $argv 3]
set validate [lindex $argv 4]
puts $log "Executing: $server $login $pass $cmd"
# Log in to remote system
spawn ssh $login@$server
expect {
"password:*" { }
"(yes/no)? " {
send -- "yes\r"
expect "password:*"
}
}
send -- "$pass\r"
expect "*]$*"
puts $log "Execute: $cmd"
send -- "$cmd\r"
expect {
"${validate}" {
send_user "TASK SUCCESSFULi."
set outcome $expect_out(buffer)
puts $log $outcome
sleep 5
send -- "logout\r"
puts $log "logged out"
expect eof
}
"failed" {
send_user "!!! TASK FAILED !!! \n"
send_user "$server $cmd\n\n"
send_user "Please manually ran this task\n"
send_user "Expect script will drop in interact mode now\n"
send_user "When finished, logout and automation will resume\n\n\n"
interact -o eof return
}
}