从网上看了几个脚本不错,借鉴一下
注:set timeout -1代表永不超时

点击(此处)折叠或打开

  1. #!/bin/sh

  2. auto_login_ssh(){

  3. expect -c "

  4. set timeout -1;

  5. spawn -noecho ssh -o StrictHostKeyChecking=no $2 ${@:3};

  6. expect *assword:*;

  7. send -- $1\r;

  8. interact;"

  9. }

  10. auto_login_ssh password user@hostname


StrictHostKeyChecking=no参数让ssh默认添加新主机的公钥指纹,也就不会出现出现是否继续yes/no的提示了。


点击(此处)折叠或打开

  1. #!/usr/bin/expect  

  2. # 解释器声明

  3. set timeout 30

  4. # 设置超时时间,单位秒  

  5. spawn ssh test@192.168.1.1

  6. # spawn 是expect的内部命令,个人理解其作用就是宣告进入人机模拟开始  

  7. expect "Password:"  

  8. # expect也是内部命令,作用是监视终端输出是否包含后面的内容,有则执行下面的send,没有就等待上面设置的timeout时间

  9. send "123456\r"  

  10. # 这个就是执行交互动作了,模拟人手动输入的东东,切记最后要带上回车符“\r”

  11. interact  

  12. # 模拟结束,把控制权交还控制台,如果不加这个,就等于直接退出了


点击(此处)折叠或打开

  1. #!/usr/bin/expect  

  2. set timeout 30  

  3. spawn mysql -uroot -p  

  4. expect "Enter password:"  

  5. send "123456\r"  

  6. interact