shell自動化輸入
shell自動化輸入的三種方式:
- 重定向
- 管道
- expect
前兩種的前提是指令需要有引數來指定密碼輸入方式,具體使用可參考部落格:
https://blog.csdn.net/zhangjikuan/article/details/51105166
下面講一下expect方式的使用
當不想要手動輸入時(如:密碼),可使用expect
來實現指令碼自動輸入。
安裝:
yum install expect -y
在shell指令碼內使用:
if [[ "x${use_v2v_local_cmd}" == "xtrue" ]]; then
if [[ "x${password_file}" != "x" ]]; then
passwd=`cat ${password_file}`
expect <<-EOF
set timeout -1
spawn ${v2v_local_cmd}
expect {
"*password*" {
send "${passwd}\r"
exp_continue
}
"*error*" {
exit 1
}
}
EOF
else
eval ${v2v_local_cmd}
fi
fi
這種方式雖好,但是在實際使用中發現了一個限制:
傳入的命令不能帶有引號,否則執行失敗。比如:spawn virsh -c 'esx://root@172.16.2.179?no_verify=1' list --all
,會報錯:no such file or directory
。實際工作中免不了要將一些帶有特殊字元的引數用引號包起來,這時可以繞一下,將命令寫到檔案中再執行:
expect執行指令碼:pass.sh
#!/bin/expect
set command [lindex $argv 0]
set passwd [lindex $argv 1]
spawn ${command}
expect {
"*password*" {
send "${passwd}\r"
exp_continue
}
"*error*" {
exit 1
}
eof {
exit
}
}
儲存命令的可執行指令碼:commond.sh
#!/bin/bash
virsh -c 'esx://root@172.16.2.179?no_verify=1' list --all
然後就可以執行:
./pass.sh ./commond.sh ABCDabcd.1234
此時就達到了自動化輸入的目的。
詳細的expect使用參考部落格:https://www.cnblogs.com/lixigang/articles/4849527.html
相關文章
- shell——shell輸入輸出
- 自動輸入密碼使用root許可權開啟shell指令碼密碼指令碼
- Shell輸入\輸出重定向
- 輸入自動補齊
- Linux Shell互動式自動化運維程式Linux運維
- input輸入框加入限制只能輸入正整數,輸入其他字元會自動清除字元
- 求助:flutter 框架自動化測試時,無法輸入內容Flutter框架
- 案例八:Shell自動化管理賬號指令碼指令碼
- WWDC 2018:自動強密碼與驗證碼自動輸入密碼
- 實現動態自動匹配輸入的內容
- 【自動化測試入門】自動化測試思維
- 直播app原始碼,登入時自動輸入密碼/自動記住密碼APP原始碼密碼
- golang呼叫模組程式實現互動輸入自動化,獲取imei及iccidGolang
- 05 Shell read讀取控制檯輸入
- linux透過shell指令碼實現ssh互動式自動化Linux指令碼
- jQuery 郵箱輸入字尾自動補全jQuery
- shell指令碼(3)-格式化輸出指令碼
- 自動化指令碼安裝mysql shell指令碼範例指令碼MySql
- 自動化簡化了移動傳輸網路的部署
- 前端自動化測試入門前端
- webpack自動化架構入門Web架構
- ansible自動化運維入門運維
- 格式化輸入輸出
- VS Code - Vim 外掛自動切換輸入法
- ant-design輸入框自動獲取焦點
- Appium+python自動化(十三)- 輸入中文 - 一次填坑記(超詳解)APPPython
- 動態監聽輸入框值的變化
- 格式化輸入和輸出
- jmeter介面自動化:登入到新增JMeter
- 淺入深出Vue:自動化路由Vue路由
- Jest前端自動化測試入門前端
- fish shell 自動補全子命令
- 帶自動提示功能的jQuery標籤輸入外掛jQuery
- Vue中實現輸入框的自動補全功能Vue
- vivo手機安裝應用自動輸入密碼密碼
- win10新視窗自動開啟輸入法怎麼辦 win10新視窗自動跳出輸入法處理方法Win10
- 利用 Angular Directive 和 @HostBinding 實現輸入文字框隨著鍵盤輸入自動變色效果Angular
- 用docxtpl庫實現docx報告自動化輸出