現場(環境):Ubuntu 16.04 套件:expect
問題:
我們一般執行Linux指令時,
經常使用sudo來獲得root執行的權限。
而執行sudo是需要輸入密碼的,
這時候你要做自動化腳本時就出現問題。
你不可能已經做了自動化腳本,
還要自己去手動輸入密碼吧。
所以這個時候就會使用到本次的套件,
讓你能夠達成自動回答密碼的效果。
處理方式:
1. 先檢查一下是否有expect這個指令存在。
#ls -l /usr/bin/ | grep expect
2. 如果沒有的話,要來安裝一相關套件。
#sudo apt-get install tcl tk expect
到這個步驟就安裝好了,那要怎麼使用呢?
在expect的模式當中,
spawn 主要是用來執行你要運作的指令。
expect 用於判讀關鍵字,
當spwan執行指令後,出現了關鍵字時要做什麼。
send 用來進行傳輸,
當讀取到在expect當中的關鍵字時,
我需要傳輸什麼樣的資料。(大多是密碼)
例如: 我要透過SCP傳輸檔案到某台機器。
這邊寫兩個方式的原因在於,
若是第一次連線時會有詢問[yes/no]的選項,
而第二次連線後,就不會有這個問題。
所以為了對應之後的連線,所以寫了兩個方式進行自動回答。
expect -c "
spawn scp /home/Localuser/test.txt user\@[IP位址]:/home/user/"
expect {
\"(yes/no)?\" {
send \"yes\r\"
expect \"password\"
send \"[你的密碼]\r\"
}
\"password\" {
send \"[你的密碼]\r\"
}
}
expect ]#
"
<本篇完>
留言列表