shell指令碼中自動化互動輸入

2021-09-01 00:09:00 字數 1048 閱讀 3599

有的shell指令碼需要互動輸入,如果需要批量或者自動化,可以根據實際情況按照如下方法處理

1.重定向

這個方法很簡單,把需要輸入的內容按每行寫入到文件中,然後執行指令碼

./vpncmd < content
2.使用管道

echo -e "3\n" | ./vpncmd
3.使用expect

expect是專門用來互動自動化的工具,但它有可能不是隨系統就安裝好的,有時需要自己手工安裝該命令

yum install expect -y
可參考如下指令碼

[root@host vpnserver]# cat expect_test.sh 

#!/usr/bin/expect #注意這行,不是/bin/sh

spawn ./vpncmd # 指定需要將哪個命令自動化

expect "select 1, 2 or 3:" # 需要等待的訊息

send "1\n" # 是要傳送的命令

expect "hostname of ip address of destination:"

send "127.0.0.1\n"

expect "specify virtual hub name:"

send "\n"

expect "password:"

send "ashq\n"

expect "vpn server>"

send "hublist\n"

expect "vpn server>"

send "exit\n"

#interact

expect off # 指明命令互動結束

shell自動化指令碼發布

關於指令碼發布 部分,將這個 流程拆分為兩個部分 簡單指令碼 遠端主機上執行 和大型指令碼 線上機器執行 簡單指令碼從四個方面來學習 1 命令羅列實現功能 2 固定內容變數實現 3 功能函式實現 4 遠端執行命令 簡單的命令羅列 例項 cd data codes f django.tar.gz rm...

linux自動化互動指令碼expect

expect指令碼是tcl指令碼語言的拓展。用來實現自動的互動式任務,無需人為干預。在實際開發中,執行shell指令碼有時候會輸入linux密碼或者是mysql密碼等,而expect可以幫我們輸入。expect在linux系統中沒有自帶,需要我們自行安裝,在ubuntu系統下,安裝命令如下 sudo...

shell中自動化互動實現 一般使用者指令碼自動切換

對shell感興趣的好友可以看看 bash是完成不了標題的動作的要借助其他工具expect 1.首先安裝expect和expect devel包 yum install expect expect devel y which expect usr bin expect 2.編輯乙個expect檔案,...