主要參考:https://www.cnblogs.com/zhenbianshu/p/5867440.html
expect解釋器
expect是一個能實現自動和交互式任務的解釋器,它也能解釋常見的shell語法命令,其特色在以下幾個命令:
spawn命令:
spawn command命令會fork一個子進程去執行command命令,然后在此子進程中執行后面的命令;
在ssh自動登陸腳本中,我們使用 spawn ssh user_name@ip_str,fork一個子進程執行ssh登陸命令;
expect命令:
expect命令是expect解釋器的關鍵命令,它的一般用法為 expect "string",即期望獲取到string字符串,可在在string字符串里使用 * 等通配符;
string與命令行返回的信息匹配后,expect會立刻向下執行腳本;
set timeout命令:
set timeout n命令將expect命令的等待超時時間設置為n秒,在n秒內還沒有獲取到其期待的命令,expect 為false,腳本會繼續向下執行;
send命令:
send命令的一般用法為 send "string",它們會我們平常輸入命令一樣向命令行輸入一條信息,當然不要忘了在string后面添加上 \r 表示輸入回車;
interact命令:
interact命令很簡單,執行到此命令時,腳本fork的子進程會將操作權交給用戶,允許用戶與當前shell進行交互;
我試了網上很多安裝方法,都存在問題,最后解決方案
sudo apt-get install expect
這樣也不需要tcl
寫了一個自動ssh登陸機器人服務器的腳本文件
#!/usr/bin/expect // 指定shebang set timeout 3 // 設定超時時間為3秒 spawn ssh user_name@172.***.***.*** // fork一個子進程執行ssh命令 expect "*word*" // 期待匹配到 'user_name@ip_string's password:' send "my_password\r" // 向命令行輸入密碼並回車 interact // 允許用戶與命令行交互
