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
	}
}
Comments [Hide comments/form]
Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by WikkaWiki