国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

使用Expect實現自動化交互

frank_fun / 2093人閱讀

摘要:于是拋出本文的主角,以實現一系列的自動化交互動作。簡介是一個免費的編程工具,用來實現自動的交互式任務,而無需人為干預。說白了,就是一套用來實現自動交互功能的軟件。而利用,則可以根據程序的提示,模擬標準輸入提供給程序,從而實現自動化交互執行。

*寫在前面

最近開發的一個項目希望實現這樣一個功能。將本地項目創建腳手架置于遠程服務器,而用戶需要創建項目時,僅需要在提供的頁面上填入一些項目基礎配置并提交,后臺便會根據選擇自動化創建項目并push上倉庫。
咋看是個非常簡單的需求,我們僅需要在用戶發起創建請求時在后端調取shell腳本并可以實現這一系列的操作。
然而目前項目創建腳手架不支持多參數傳遞,只能通過用戶輸入完成各參數傳遞的操作。
于是拋出本文的主角:Expect,以實現一系列的自動化交互動作。

Expect簡介
expect是一個免費的編程工具,用來實現自動的交互式任務,而無需人為干預。說白了,expect就是一套用來實現自動交互功能的軟件。

在實際工作中,我們運行命令、腳本或程序時,這些命令、腳本或程序都需要從終端輸入某些繼續運行的指令,而這些輸入都需要人為的手工進行。而利用expect,則可以根據程序的提示,模擬標準輸入提供給程序,從而實現自動化交互執行。這就是expect?。?!

Expect命令

使用expect時,首先需要在文件頂部寫入#!/usr/bin/expect,已告知進程這是一個expect文件。而在腳本書寫中基本離不開以下這「六」個命令。

spawn 啟動新的進程

expect 用來等待一個進程的反饋,我們根據進程的反饋,再發送對應的交互命

send 發送需要交互的值,替代了用戶手動輸入內容

set 設置變量值

expect eof 自動化結束

interact 退出自動化,進入人工交互

Expect語法

expect使用的是tcl語法,詳細教程可查閱TCL基本語法 - Tcl教程
這里提供幾個簡單的流程控制,一般來說已經夠用了。

傳參

expect參數值存放在$argv中,比如取第一個參數就是[lindex $argv 0],以此類推。

// 執行命令 xxx.sh mike 22 engineer

#!/usr/bin/expect
set name = [lindex $argv 0]
set age = [lindex $argv 1]
set job = [lindex $argv 2]
if/else
if {$a == "a"} {
  set flag = 0
} else {
  set flag = 1
}

expect "*請輸入xxx的值*"
send $flag
循環匹配

一般來說expect匹配成功會會退出語句,而exp_continue表示循環匹配。匹配到改關鍵字后繼續從頭開始匹配。例如安裝軟件時需要輸入多個 yes。

expect {
    "*yes/no*" {
        send "yes"
        exp_continue
    }
    eof
    {
        send "eof"
    }
}
栗子

未完待續

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/109254.html

相關文章

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<