環境: redhat 6.5
根據網上提供方法,測試了很多寫法都不成功,測試了很久才有了以下腳本。
命令遠程連接ssh並執行命令,scp/ftp等遠程連接操作同理:
#!/usr/bin/expect
set passwd "password"
set user "root"
set host "192.168.1.168"
#spawn表示開啟新expect會話進程
spawn ssh $user@$host
#有可能檢測密鑰方式連接,我的沒有所以先注釋了
#expect檢測字符串經過簡單測試,應該是以正則表達式匹配接收的字符
#expect "yes/no"
#send "yes\r"
expect "password"
send "$passwd\r"
expect "$user@"
#感覺shell交互就是得expect先接收,才能進行下一步send
send "echo 'passwd' >> /root/for_test.sh\r"
expect "$user@"
send "exit\r"
#expect eof表示結束expect和相應進程會話結束,如果用interact會保持停留在當前進程會話
expect eof
