环境: 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