Expect 实例: 使用ssh登陆到一台server执行指定的命令
时间:2008-09-03 来源:oychw
使用ssh登陆到一台server执行指定的命令
注意点:
Send后面一般都要添加expect。本例是使用for循环重复expect。
Expect后面的“{“必须和expec在一行
匹配完一个子项目后,expect下面的项目还会继续执行,在必要的时候需要添加continue,break等。
子项目中的内容要使用大括号括起来。
#!/bin/bash
# \
exec expect "$0" "$@"
#------- write by Neil.xu 2008.0903 QQ:37391319 Email: xurongzhong#gmail.com--------
#------- function : used to ssh a server and execute a command----
set host [lindex $argv 0]
set command [lindex $argv 1]
set timeout 15
match_max 100000
spawn ssh [string trim $host]
for {} {1} {} {
expect {
"*Permission denied*" { send "rss123\r";continue }
"*assword:" { send "kingsit\r" }
"*connecting*yes*" {send "yes\r"}
"#" { send "$command\r";break }
"* key*changed*" { exec > $env(HOME)/.ssh/known_hosts }
"*closed*remote host" {return -2}
"*refused" {return -3}
timeout { puts "Time out before we can log onto $host"; return -1 }
}
}
expect "#"
close