Ubuntu使用expect自動輸入root密碼

2021-09-27 01:42:02 字數 720 閱讀 3317

應用執行在ubuntu系統中,由於需要自動修改網絡卡ip,所以必須先獲取root許可權。

網上查了一下都是推薦使用expect來實現,首先安裝expect,直接輸入

sudo apt-get install expect
編寫s**件,以root許可權執行應用

#!/usr/bin/expect  -f   

expect "密碼:"

send "1\r\n"

interact

第一句,就是告訴用expect來執行當前sh

第二句,用spawn開個程序,用來模擬輸入要執行的命令,在此處是呼叫乙個bash指令碼

第三句,是重點以及最容易出錯的地方,雙引號裡面的內容。必須跟你在終端中輸入

出現的提示一致,我的是中文環境,所以提示的是 「密碼:」,如果你的是英文環境可能是"password:",不管是什麼直接複製過來即可,而且空格不能丟。

第四句,「1」是root的密碼,後面的「\r\n」不能少,如果你是中文環境是「\r\n」,如果是英文環境"\r"即可。

ubuntu一般都支援在桌面上新增快捷圖示,通過快捷圖示開啟的時候,預設是不會啟動乙個終端的,所以你會發現打不開。右鍵快捷圖示,用gedit或者plugi文字編輯器開啟,將terminal=true,這樣執行的時候,會彈出乙個除錯終端,但是不用輸入密碼了。

expect 的小點 expect的使用

expect password send 123456 r 注意 expect 和字串 password 中間有乙個空格,send和字串 123456 r 中間有乙個空格。因為expect和send都是乙個命令,只有加空格才能與引數分開。expect 注意 expect與 之間有乙個空格,因為這樣e...

expect命令使用

expect 是由don libes基於tcl tool command language 語言開發的,主要應用於自動化互動式操作的場景,借助expect處理互動的命令,可以將互動過程如 ssh登入,ftp登入等寫在乙個指令碼上,使之自動化完成。尤其適用於需要對多台伺服器執行相同操作的環境中,可以大...

expect 使用例項

shell指令碼實現ssh自動登入遠端伺服器示例 usr bin expect spawn ssh root 192.168.22.194 expect password send 123 r expect interact expect是乙個用來處理互動的命令。借助expect,我們可以將互動過程...