2.使用expect
2.1乙個簡單的輸入密碼操作
#!/usr/bin/expect
set timeout 100
set password "123456"
spawn sudo rm -rf zzlogic
expect "password:"
send "$password\n"
interact
說明:第一行#!/usr/bin/expect表示使用expect的shell互動模式
set是對變數password賦值
set timeout 100:設定超時時間為100秒,如果要執行的shell命令很長可以設定超時時間長一些。expect超過超時時間沒有監測到要找的字串,則不執行,預設timeout為10秒
spawn在expect下執行shell指令碼
expect對通過spawn執行的shell指令碼的返回進行判斷,是否包含「」中的字段
send:如果expect監測到了包含的字串,將輸入send中的內容,\n相當於回車
interact:退出expect返回終端,可以繼續輸入,否則將一直在expect不能退出到終端
set cp_type [lindex $argv 0 ]
set route_user [lindex $argv 1 ]
set route_ip [lindex $argv 2 ]
set route_dir [lindex $argv 3 ]
set host_dir [lindex $argv 4 ]
set password [lindex $argv 5 ]
set timeout 80
if else
}expect
"password:"
}expect eof
exit
(2)shell指令碼中呼叫expect指令碼
expect /usr/bin/getfw_exp rsync $route_user $route_ip $route_fpga_b_dir $host_dir $route_pwd
用expect實現SCP SSH自動輸入密碼登入
在命令列ssh遠端登入伺服器和scp遠端傳輸檔案都需要互動式輸入密碼,無法像mysql登入資料庫 mysql uroot p123456一樣直接完成。其實可以用指令碼依賴expect來達到這一目的。首先安裝expect root yqtrack jumphost src yum y install ...
expect實現「scp ssh自動輸入密碼「
expect通常用來自動輸入一些指令碼,比如我要ssh或者scp時,通常會讓你確認,是否繼續,或者輸入密碼。這種情況有兩種解決方式 安裝秘鑰,使得ssh和scp都能免密碼操作 免密碼登入。使用expect配置一些自動化的應答指令碼。由於我是通過docker容器訪問伺服器,所以推薦第二種。一般來說,各...
Ubuntu使用expect自動輸入root密碼
應用執行在ubuntu系統中,由於需要自動修改網絡卡ip,所以必須先獲取root許可權。網上查了一下都是推薦使用expect來實現,首先安裝expect,直接輸入 sudo apt get install expect編寫s 件,以root許可權執行應用 usr bin expect f expec...