需求:
登录到ftp服务器ftp.google.org (用户名:google 密码:google), 根据用户输入获取Rfc文档。
实现:
#!/usr/bin/env expect
set timeout 15
set u_Prompt "Name"
set p_Prompt "Password:"
set f_Prompt "ftp>"
set sUser "google"
set sPwd "google"
log_file -a tmp.log
proc sLogin {} {
global u_Prompt p_Prompt f_Prompt sUser sPwd
send "spawning ftp\n"
spawn ftp ftp.google.org
expect {
"$u_Prompt" {
exp_send "$sUser\r"
exp_continue
}
"$p_Prompt" {
exp_send "$sPwd\r"
exp_continue
}
-ex "$f_Prompt" {
puts "Login Successfully!\n"
return $spawn_id
}
}
}
proc gRfc {} {
set spawn_id [sLogin]
while 1 {
send_user "Enter an RFC number:"
expect_user {
-re "(\[0-9]+)\n" break
-re (.*)\n {
send_error "$expect_out(1,string) is garbage!\n"
}
timeout {
send_error "Sorry, I can't wait any longer!\n"
exit 1
}
}
}
send_user "You asked for RFC $expect_out(1,string).\n"
send_user "\nall done\n"
}
gRfc
注意:
1) 全局变量的使用
2)log_user实现脚本日志的保存
3) send_user 和expect_user实现人和脚本的交互