☆注意要执行的操做放在注释那行的下面 用send包起来☆bash
本例中是进入指定目录,开始一个程序。ssh
#!/usr/bin/expect ##author:stevenrao ##打开 ssh 终端,省去密码交互脚本 if { $argc==0 } { send "usage: $argv0 ip \[port\]\n"; exit } #要打开的远程机器ip 端口 set ip [lindex $argv 0] set port 22 if { $argc==2 } { set port [lindex $argv 1] } #日志文件,一ip为文件名 log_file $ip log_user 1 #用户名密码 set user root set password cwvbu3knna #启动ssh登陆进程 spawn /usr/bin/ssh -p $port $user@${ip} set myid $spawn_id set timeout 10 while { [string length $myid] } { #提示符 set prompt "(%|#|\\$|>|\\])" catch {set prompt $env(EXPECT_PROMPT)} expect { "*tcsetattr failed*" { send_log "\n${ip},sshsyscallerror\n"; break } "*Authentication failed*" { break } "*yes/no*" { send "yes\n" } "*password: " { send "$password\n" } timeout { send_log "\n${ip},logintimeout\n" exit } -re $prompt { set timeout 1 send_log "\n${ip},loginsuccess\n" ##登陆成功,这里放你想要执行的交互脚本 send "cd /usr/local/court/jusspider-1.0-RELEASE/bin\n" send "sh start.sh\n" send "exit\n" interact;exit expect eof { send_log "eof\n" exit } } } }
就这样,祝你们套用成功^_^ide