从网上看了几个脚本不错,借鉴一下
注:set timeout -1代表永不超时
点击(此处)折叠或打开
- #!/bin/sh
- auto_login_ssh(){
- expect -c "
- set timeout -1;
- spawn -noecho ssh -o StrictHostKeyChecking=no $2 ${@:3};
- expect *assword:*;
- send -- $1\r;
- interact;"
- }
- auto_login_ssh password user@hostname
StrictHostKeyChecking=no参数让ssh默认添加新主机的公钥指纹,也就不会出现出现是否继续yes/no的提示了。
- #!/usr/bin/expect
- # 解释器声明
- set timeout 30
- # 设置超时时间,单位秒
- spawn ssh [email protected]
- # spawn 是expect的内部命令,个人理解其作用就是宣告进入人机模拟开始
- expect "Password:"
- # expect也是内部命令,作用是监视终端输出是否包含后面的内容,有则执行下面的send,没有就等待上面设置的timeout时间
- send "123456\r"
- # 这个就是执行交互动作了,模拟人手动输入的东东,切记最后要带上回车符“\r”
- interact
- # 模拟结束,把控制权交还控制台,如果不加这个,就等于直接退出了
- set timeout 30
- spawn mysql -uroot -p
- expect "Enter password:"