文章目錄
- 前言
- 一、Here Document
- 二、Expect
- 總結
前言
免互動分為兩種Here document 和expect,首先HereDocument是幫助shell腳本開發人員不必使用臨時檔案來構建輸入資訊,而是直接就地生產出一個檔案并用作命令的標準輸入,節省大量的時間且提高效率,expect是建立在tcl語言基礎上的一個工具,常被用于進行自動化控制和測驗,解決shell腳本中互動相關的問題,
一、Here Document
- 使用O/I重定向的方式將命令串列提供給互動式程式
- 標準輸入的一種替代品
- 語法格式

- 案例
4.1、案例1

4.2、案例2 將內容輸入到指定檔案

4.3、案例3給a賦值


4.4、在EOF中參考變數變成普通字符

4.5、給用戶添加密碼

4.6、順序顛倒案例

4.7、故障案例


4.8、tee案例

4.9、使用腳本輸出內容


4.10、腳本輸出括號故障案例


4.11、本地源案例

4.12、去掉每行之前的TAB字符案例


4.13、多行注釋


二、Expect
- 建立在tcl語言基礎上的一個工具,常被用于進行自動化控制和測驗,解決shell腳本中互動相關的問題
- xpect的安裝:它是一個程式,所以需要安裝
Rpm -q expect
Rpm -q tcl
Yum install -y expect tcl
- 基本命令
3.1、腳本編輯器:#!/usr/bin/expect
3.2、spawn
spawn后面通常跟一個Linux執行命令,表示開啟一個會話、啟動行程,并跟蹤后續互動資訊,
3.3、expect
判斷上次輸出結果中是否包含指定的字串,如果有則立即回傳,否則就等待超時時間后回傳;只能捕捉由spawn啟動的行程的輸出;用于接收命令執行后的輸出,然后和期望的字串匹配
3.4、send
向行程發送字串,用于模擬用戶的輸入;該命令不能自動回車換行,一般要加\r(回車)或者\n
3.5、結束符expect eof
表示互動結束,等待執行結束,退回到原用戶,與spawn對應,(與interact二選一)
3.6、interact
執行完成后保持互動狀態,把控制權交給控制臺,會停留在目標終端而不會退回到原終端,這個時候就可以手工操作了,interact后的命令不起作用,比如interact后添加exit,并不會退出root用戶,而如果沒有interact則登錄完成后會退出,而不是留在遠程終端上,
3.7、set
expect 默認的超時時間是10秒,通過 set 命令可以設定會話超時時間,若不限制超時時間則應設定為-1,
3.8、exp_continue
exp_continue 附加于某個expect判斷項之后,可以使該項被匹配后,還能繼續匹配該expect-判斷陳述句內的其他項,exp_continue類似于控制陳述句中的 continue 陳述句,表示允許expect繼續向下執行指令,
- 案例
4.1、ssh遠程登陸案例


4.2、位置變數


4.3、控制臺輸入用戶名自動填充密碼


總結
在使用免互動的程序中,我們學到如果使用Here document,則可以幫助運維工程師減少使用臨時檔案來構建輸入資訊,而是直接就地生產出一個檔案并用作命令的標準輸入,當然,在使用EOF程序中,可以指定檔案將內容輸入,或者使用腳本的形式自動化的呼叫,在使用expect程序中,我們一般使用的解釋器是/usr/bin/expect,spawn是跟蹤后續互動資訊,開啟會話,expect含有多重判斷的含義,send向行程發送字串,用于模擬用戶的輸入,該命令不能回車換行,一般采取行后加\r或者\n,結束符號expect eof或者interact二選一即可,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/300881.html
標籤:其他
上一篇:C語言實作五子棋小游戲
