天天看點

expect實作自動登入

從網上看了幾個腳本不錯,借鑒一下

注: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 [email protected]
  6. # spawn 是expect的内部指令,個人了解其作用就是宣告進入人機模拟開始  
  7. expect "Password:"  
  8. # expect也是内部指令,作用是監視終端輸出是否包含後面的内容,有則執行下面的send,沒有就等待上面設定的timeout時間
  9. send "123456\r"  
  10. # 這個就是執行互動動作了,模拟人手動輸入的東東,切記最後要帶上回車符“\r”
  11. interact  
  12. # 模拟結束,把控制權交還控制台,如果不加這個,就等于直接退出了
  1. set timeout 30  
  2. spawn mysql -uroot -p  
  3. expect "Enter password:"  

繼續閱讀