shell expect使用方法

來源:互聯網
上載者:User

    Expect的作者Don Libes在1990年開始編寫Expect時對Expect做有如下定義:Expect是一個用來實現自動互動功能的軟體套件(Expect [is a] software suite for automating interactive tools)。使用它系統管理員的可以建立指令碼用來實現對命令或程式提供輸入,而這些命令和程式是期望從終端(terminal)得到輸入,一般來說這些輸入都需要手工輸入進行的。Expect則可以根據程式的提示類比標準輸入提供給程式需要的輸入來實現互動程式執行。甚至可以實現實現簡單的BBS聊天機器人。

    Expect是不斷髮展的,隨著時間的流逝,其功能越來越強大,已經成為系統管理員的的一個強大助手。Expect需要Tcl程式設計語言的支援,要在系統上運行Expect必須首先安裝Tcl。

    從最簡單的層次來說,Expect的工作方式象一個通用化的Chat指令碼工具。Chat指令碼最早用於UUCP網路內,以用來實現電腦之間需要建立串連時進行特定的登入工作階段的自動化。spawn命令來啟動指令碼和命令,Chat指令碼由一系列expect-send對組成:expect等待輸出中輸出特定的字元,通常是一個提示符,然後發送特定的響應。

    set timeout設定指令碼等Shell返回與expect指定的模式比對的字串的時間,如果匹配成功則立即繼續執行,如果匹配不到就會阻塞,在超出timeout指定的時間後才繼續執行。
timeout預設是10s,如果設定為-1,指令碼就要永遠等下去。


一個簡單的例子,用於自動輸入kerberos密碼:   

#!/usr/bin/expect#source /home/rank/.bash_profileset timeout 10spawn /usr/bin/kinit can.yuexpect "*OPI.COM*"send "111111\r"expect eof


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.