使用expect實現自動輸入密碼

2021-08-29 04:49:47 字數 1062 閱讀 4798

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...