#主脚本为其他shell时,执行此子脚本,要注意:expect 脚本名;不能直接./脚本名
#下面每个{}都要注意前后与值之间都有空格=》不注意这个会很晕菜的。。
#最后要加expect eof,否则会立即结束
#每次expect都会重新计算timeout,每次expect前都可以指定不同的timeout
set VMIP 169.254.213.227
set loginuser Administrator
set password 123456
spawn telnet $VMIP
expect "login" { send "$loginuser\r" } \
timeout { exit 1 }
set timeout 30
expect "password:"
send "$password\r"
#...
send "exit\r\n"
expect eof
引用Greg Baker的一个ftp例子:
-------------------------------------
spawn ftp localhost
set timeout 45
expect "220*Name" { send_user "Connected!\n" } \
timeout { send_error "Never got name\n" ; exit}
send "$username\n"
expect -i "Password"
send "$password\n"
expect "530 Login incorrect" {
send_error "Bad password\n" ; exit 2 } \
"230*logged in*ftp>" { send_user "Password OK\n" } \
timeout { send_error "Login timed out" ; exit 3 }
set timeout 200 ; # could take a while to send
send "put myfile myfile.bak\n"
expect "226 Transfer complete*ftp>" {
send_user "Transfer OK\n" } \
timeout { send_error "Transfer not done in time" }
send "bye\n"
-------------------------------------