close

現場(環境):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 ]#

"

 

<本篇完>

arrow
arrow
    全站熱搜

    IT001 發表在 痞客邦 留言(0) 人氣()