Can you summarize the following document?
        
  Expect含有利用正規表示式進行模式匹配以及通用的程式設計功能,允許簡單的指令碼智慧地管理如下工具:telnet,ftp和ssh(這些工具都缺少程式設計的功能),巨集以及其它程式。Expect指令碼的出現使得這些老的軟體工具有了新的功能和更多的靈活性。

  一個簡單的指令碼程式例子就能實現自動的telnet會話:  另一個指令碼程式例子,自動建立FTP會話

  Expect是一種將現有的實用程式組合起來的膠合劑,通常考慮的是如何使Expect利用系統現有的工具解決問題而不是如何在Expect中解決問題。  Expect主要應用涉及商用軟體產品。很多這類的產品都會提供某種命令列工具,但這些工具缺乏指令碼程式設計的能力,只是為了幫助使用者管理產品,而商家通常不會在如何實現一個穩定性好的指令碼語言上耗費很多精力。Expect指令碼中可以包含shell,查詢環境變數,通過執行某些Unix命令獲得更多的資訊,然後在產品所帶命令列介面中加入必須的資訊,來完成使用者的目標。在產品命令列介面中查詢相關資訊,該指令碼可以在多種選擇中智慧地決定當前應該做什麼比較合適。  每次Expect操作完成,執行結果將儲存在本地環境變數 $expect_out 中。這允許指令碼收集這些資訊給使用者以相應的反饋,同時也允許根據當前情況傳送相對應的指令。  Expect通常用來建立一組測試套件,可以用在程式、元件或者嵌入式系統中。DejaGnu就是利用Expect寫成的一組測試套件。它被大量地應用於測試 gcc,對於遠端目標的測試例如嵌入式開發也是非常合適的。  你可以利用一種叫作"autoexpect"的工具,自動生成expect指令碼。這個工具觀測你的操作,並利用啟發性知識生成expect指令碼。儘管生成的程式碼可能會很長,含義上有點模糊,你可以修改生成的指令碼使它成為你需要的程式碼。

  

  Expect可通過cron封裝系統管理任務,在規定的時期執行。能夠這樣做是因為Expect僅僅使用已經安裝在主機中的系統管理工具,不需要學習額外的工具。如果程式設計師學過Tcl,那麼轉移到Expect是一件非常簡單的工作,相同的程式設計結構和語法,再加上一些內建的額外功能。  業界對室內管理任務使用Expect提供了很大的支援。Expect在很多的公司廣泛使用,例如Silicon Graphics, IBM, HP, Sun, Xerox, Amdahl, Tektronix, AT&T, ComputerVision和世界銀行,利用Expect對開發專案、檔案傳輸、帳號管理、網路測試進行室內自動測試。  Expect已經以多種模組的方式移植到Python和Perl語言中。Expect命令的部分子集移植到Java和嵌入到英語:SwichTermJ(基於Java的終端模擬器)之中。這些例行程式通常是原程式的同等功能的另一種解釋方式。一旦你理解了其中的概念,如果需要的話,換到其它語言,也就很容易了。

  Expect繼承了Tcl的語法規範,對於使用其它指令碼語言的人來說這是相當陌生的。和其它語言如bash、英語:csh和Perl相比,Expect的語法模式是不同的。就像有時候一個變數的字首冠以"$",有時候又不需要。有些版本的Expect和Perl、Python語言的語法倒是很相似的。  另一個缺陷是在不同的平臺移植Expect指令碼很難。例如,一個Expect指令碼使用基於Unix的工具,就不可能適合移植到Windows平臺。如果可能的話,程式設計師必須找到相應的命令列程式,能夠提供相同的資訊,這就可能需要修改expect指令碼的send部分,而這部分恰恰就是整個指令碼的核心。如果你使用的是tcl,perl或者python這些獨立於平臺的工具,使用它們各自的POSIX介面訪問檔案、對遠端互動進行標準的POSIX處理(telnet,ftp等等),就不會出現上述問題。  一個不明顯的缺陷是,有時Expect可能並不是解決問題的最好方法。例如,一個系統管理員需要登入到多個伺服器,這些自動的操作要使用Expect就得配以儲存的密碼,而不是更安全的解決方案採用ssh代理金鑰。雖然這種自動互動工具很吸引人,但是還是有很多其它的辦法可以更安全穩定地解決同樣的問題。  Expect自動化控制命令列工具,但是對圖形使用者介面就失效了。Windows提供了不少有價值的工具,很多是基於圖形使用者介面的,這就是Expect失效的地方了。Windows下圖形介面程式可以通過像Autohotkey或者AutoIt等工具來實現自動化控制。
Expect是Unix系統中用來進行自動化控制和測試的軟體工具,由Don Libes製作,作為Tcl指令碼語言的一個擴充套件,應用在互動式軟體中如telnet,ftp,Passwd,fsck,rlogin,tip,ssh等等。該工具利用Unix偽終端包裝其子程序,允許任意程式通過終端接入進行自動化控制;也可利用Tk工具,將互動程式包裝在X11的圖形使用者介面中。