當前位置:
首頁 > 知識 > Linux Shell互動式自動化運維程序

Linux Shell互動式自動化運維程序

Expect是Linux操作系統下的一個用來處理交互操作,系統默認是沒有安裝expect庫,所以執行expect會提示找不到命令,需要手動安裝,其它安裝也比較簡單,可以通過二進位源碼包編譯配置進行安裝,也可以通過網路藉助yum源來安裝,yum源安裝比較簡單;我們下面藉助Expect庫來實現Linux互動式自動化運維操作,只需要執行腳本就可以實現自動化運維操作,不需要手動輸入一些信息按確定,我們可以將交互過程寫在一個腳本上,使之自動化完成。我們可以通過expect實現ssh自動登錄、ftp自動登錄、自動傳輸文件、自動創建和刪除用戶等都符合互動式自動化運維。下面我們會通過一些案例來展現結果,我們通過以下幾個命令來介紹四個基礎命令。

Linux在企業中應用還是比較廣泛,而且expect是一個免費的編程工具語言,用來實現自動和互動式任務進行通信,而無需人的干預。expect是不斷的更新,隨著時間的流逝,其功能越來越強大,對Linux有基本的了解都知道這個命令,而且是Linux操作系統管理員必不可少的一個命令,常用的shell腳本都需要用到這個工具,可以省去運維大量的操作時間,有利於提高工作效率,如果對Linux不太了解的可以去購物平台去搜劉遄老師的《Linux就該這麼學》這本書學習,書籍內容比較適合初學者,也有好多案例比較適合企業常用的一些操作,expect需要Tcl編程語言的支持,要在系統上運行expect必須首先安裝Tcl。

下面詳細的解釋四個基礎命定,expect中最關鍵的四個命令是:send,expect,spawn,interact。

1、send:用於向進程發送字元串;

2、expect:從進程接收字元串;

3、spawn:啟動新的進程;

4、interact:允許用戶交互;

1. send命令

send命令接收一個字元串的參數,並且將該參數發送到進程。

2. expect命令

expect命令和send命令執行的結果正好相反,expect是用來等待一個進程的反饋消息,expect可以接收一個字元串參數,也可以接收正則表達式參數,一般都是與send命令結合使用才能看到明細的效果,下面我們可以用一個最簡單的互動式的案例來展示效果:

上面兩行代碼的意思是:從標準輸入中等到hi和換行鍵後,向標準輸出輸出hello there。

Expect還有一種最常用的語法是來自tcl語言的模式-動作,這種語法在shell中應用極其靈活,使用也非常方便,下面我們就各種語法用案例來說明

3. spawn命令

上面的所有案例都是和標準輸入輸出進行交互,但是我們更希望他可以和某一個進程進行交互。spawm命令就是用來啟動新的進程的。spawn後的send和expect命令都是和spawn打開的進程進行交互的。結合上面的send和expect命令我們可以實現一個更複雜點的shell程序。

下面是測試腳本的結果:

這段代碼的作用是實現登錄到ssh伺服器192.168.3.9的root賬號上,這段shell代碼中用到interact,下面我們就來詳細的介紹這個命定;

4.interact

到現在為止,我們已經可以結合spawn、expect、send自動化的完成很多任務了。但是,如何讓人在適當的時候干預這個過程了。比如ssh登錄到伺服器上面要執行什麼操作,仍然可以停留在ssh伺服器登錄狀態,以便手動的執行後續命令。interact可以達到這些目的。下面的案例是在自動登錄ssh伺服器後,允許用戶交互操作。

這個案例其實和上面這個差不多,但是這個多了一個自動退出功能,設置登錄成功10s後自動退出。

Expect在shell中也是一個比較複雜的庫,如果想深入的了解,自己也要多結合理論和實踐操作一起進行,這樣學習起來還是比較快的,還可以通過shell實現簡單的控制功能,如:循環、判斷等。但是對於需要交互的場合則必須通過人工來干預,有時候我們可能會需要實現和交互程序如ssh伺服器等進行交互的功能,而expect就使用來實現這種功能的工具,希望本文章會給大家有所幫助。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Linux資訊速推 的精彩文章:

網站攻擊方法及防禦

TAG:Linux資訊速推 |