Expect安裝方法


Expect是基於Tcl語言的一種腳本語言,其實無論是交互還是非交互的應用場合,Expect都可以大顯身手,但是對於交互式的特定場合,還非Except莫屬。 

第1步:使用root用戶登錄 
       
第2步:復制安裝文件 
       
       在合適的位置創建一個文件夾,例如soft 
       修改文件夾讀寫權限 
       chmod 777 soft 

第3步:解壓安裝包 
        [我已經上傳了expect-5.43.0.tar.gz 和 tcl8.4.11-src.tar.gz 在本文后面可以點擊下載] 
       把expect-5.43.0.tar.gz和tcl8.4.11-src.tar.gz復制到soft目錄下, 
       解壓tcl8.4.11-src.tar.gz 
       tar –xvf tcl8.4.11-src.tar.gz 
       解壓后將創建tcl8.4.11 文件夾 

       解壓expect-5.43.0.tar.gz 
       tar –xvf expect-5.43.0.tar.gz 
       解壓后將創建expect-5.43 文件夾 
       目錄結構如下圖(SSH登錄的截圖)所示: 
         
       
       上圖中可以看出在/soft下有tcl8.4.11和tcl8.4.11 兩個文件夾 

第4步:安裝tcl 
       進入/soft/tcl8.4.11/unix 目錄 
        a.執行sed -i "s/relid'/relid/" configure 
        b.執行./configure --prefix=/expect 
        c.執行make 
        d.執行make install 
        e.執行mkdir -p /tools/lib 
        f.執行cp tclConfig.sh /tools/lib/ 
        g. 將/tools/bin目錄export到環境變量 
           tclpath=/tools/bin 
           export tclpath 

第5步:安裝Expect 
        進入/soft/expect-5.43目錄 
        執行./configure --prefix=/tools --with-tcl=/tools/lib --with-x=no 
        如果最后一行提示: 
        configure: error: Can't find Tcl private headers 
        需要添加一個頭文件目錄參數 
        --with-tclinclude=../tcl8.4.11/generic,即 
        ./configure --prefix=/tools --with-tcl=/tools/lib --with-x=no --with-tclinclude=../tcl8.4.11/generic 
         ../tcl8.4.11/generic 就是tcl解壓安裝后的路徑,一定確保該路徑存在 
        執行make 
        執行make install 
        編譯完成后會生在/tools/bin內生成expect命令 
        執行/tools/bin/expect出現 expect1.1>提示符說明expect安裝成功. 

第6步:創建一個符號鏈接 
        ln -s /tools/bin/expect /usr/bin/expect 
        查看符號連接 
        ls -l /usr/bin/expect 
        lrwxrwxrwx 1 root root 17 06-09 11:38 /usr/bin/expect -> /tools/bin/expect 

        這個符號鏈接將在編寫expect腳本文件時用到,例如在expect文件頭部會指定用於執行該腳本的shell 
        #!/usr/bin/expect 
        ... 
        ... 

----------------------

1.下載expect和tcl

下載地址:http://download.csdn.net/download/tobyaries/5754943

2.安裝expect

tar -zxvf tcl8.4.11-src.tar.gz 
tar -zxvf expect-5.43.0.tar.gz 
cd tcl8.4.11/unix
 ./configure
make && make install

cd expect-5.43

./configure --with-tcl=/usr/local/lib/ --with-tclinclude=/data/software/tcl8.4.11

make && make install

3.腳本測試

 

[plain]  view plain  copy
 
 print?在CODE上查看代碼片派生到我的代碼片
  1. #!/usr/bin/expect -f  
  2.   
  3.   
  4. set timeout 30  
  5. set name [lindex $argv 0]  
  6. set pw [lindex $argv 1]  
  7. log_user 0  
  8. spawn passwd $name  
  9. for {set i 1} {$i < 3} {incr i} {  
  10.     expect "*password:" {send "$pw\r"}  
  11. }  
  12. expect "*successfully"  
  13.     send_user "Password updated successfully\n"  
  14. expect eof  



 

 

[解析]

  很簡單的程序,首先把第一個參數賦值給變量name作為用戶名,把第二個參數賦值給pw作為密碼。然后關閉標准輸出,就是類似shell的 "> /dev/null",然后spawn開啟子進程運行passwd程序,因為會重復輸入2次密碼,所以這里我們用到了TCL語法的for循環,執行2次密碼輸入。最后匹配到successfully字樣的就輸出修改成功,然后退出腳本。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM