LINUX EXPECT的安裝

perfychi發表於2012-10-04
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 LINUX EXPECT的安裝

2008-07-07 21:48:34

標籤:linux expect

原創作品,允許轉載,轉載時請務必以超連結形式標明文章 原始出處 、作者資訊和本宣告。否則將追究法律責任。http://miracle.blog.51cto.com/255044/86275

      今天同事要求在兩臺新裝的LINUX系統上安裝expect
     
說實話還真不知道這個東西是幹什麼的 -:(
        

後來查了一下,趕緊補習補習
Expect [is a] software suite for automating interactive tools
。使用它系統管理員的可以建立指令碼用來實現對命令或程式提供輸入,而這些命令和程式是期望從終端(terminal)得到輸入,一般來說這些輸入都需要手工輸入進行的。

     
    
檢查系統,發現tcl已經安裝了。

[root@rhel ~]# rpm -qa|grep tcl
tcl-8.4.13-3.fc6
tclx-8.4.0-5.fc6

    後來才發現,因為expect需要重新編譯後安裝,那麼就需要tcl的開發包。

rpm -ivh --force tcl-devel-8.4.13-3.fc6.i386.rpm

    然後將expect-5.43包解開,開始讀INSTALL文件,系統管理員告訴我,不用讀,直接執行 ./configure --help開引數。確實好使,又土了一次 :-(
  

1.首先確定tcl開發包安裝的位置
rpm -qpl tcl-devel-8.4.13-3.fc6.i386.rpm|more

2.
然後根據引數,執行./configure
./configure --with-tcl=/usr/lib --with-tclinclude=/usr/include/tcl-private/generic

3.
執行
make

4.
執行
make install

    
   
完成第四步後,expect順利安裝成功。-:)

前不久因為進行異地copy資料,就想到了scp,但是這個東西需要手動去輸入密碼,不能放到後臺去執行,於是就考慮有沒有辦法讓他自動輸入密碼呢,最終發現了expect這個東西,很強大的東西,所以我就在本地了下,最終實現了不用手動輸入密碼也可以進行COPY資料,拿來與大家分享.

    要使用expect需要預先安裝tcl這個東西,然後再安裝expect.我這裡使用的是tcl8.4.11-src.tar.gzexpect-5.43.0.tar.gz的安裝包.

    1.安裝tclexpect

    #tar zxvf tcl8.4.11-src.tar.gz #cd tcl8.4.11/unix #./configure && make && make install #cp tclUnixPort.h  ../generic/

    #tar zxvf expect-5.43.0.tar.gz #cd expect-5.43/ #./configure --with-tcl=/usr/local/lib/ --with-tclinclude=\ /home/nagios/tcl8.4.11/generic/  --with-x=no

    #make && make install

    OK,tcl以及expect已經安裝完成了.下面給出scp的一個expect很簡單的一個指令碼

    #!/usr/local/bin/expect

    spawn scp /home/nagios/tuning-primer.sh nagios@192.168.100.104:/home/nagios/

    expect "Password:"

    exec sleep 2

    send "nagios&*(\n"

    interact

    就這麼一個簡單的指令碼,就可以實現了自動輸入密碼的功能,大家對expect的瞭解還是需要在網上自己找些資料的,他也支援函式、條件語句、迴圈語句的,功能蠻強大的.

 

 

 

 

 

一、Linuxexpect的安裝和使用

    要使用expect需要預先安裝tcl這個東西,然後再安裝expect.我這裡使用的是tcl8.4.11-src.tar.gzexpect-5.43.0.tar.gz的安裝包.

    安裝tclexpect

 

    #tar zxvf tcl8.4.11-src.tar.gz #cd tcl8.4.11/unix #./configure && make && make install #cp tclUnixPort.h  ../generic/

 

 

    #tar zxvf expect-5.43.0.tar.gz #cd expect-5.43/ #./configure --with-tcl=/usr/local/lib/ --with-tclinclude=\ /home/nagios/tcl8.4.11/generic/  --with-x=no

 

    #make && make install

 

    OK,tcl以及expect已經安裝完成了.下面給出scp的一個expect很簡單的一個指令碼

 

    #!/usr/local/bin/expect

 

    spawn scp /home/nagios/tuning-primer.sh nagios@192.168.100.104:/home/nagios/

 

    expect "Password:"

 

    exec sleep 2

 

    send "nagios&*(\n"

 

    interact

 

二、Windowsexcept的安裝和使用

 

    這是一個自動登入AIX伺服器的例子。

 

1、先去如下地方下載expect:

windows">

ftp://bmrc.berkeley.edu/pub/winnt/tcltk/expect

 

2、安裝預設路徑是C:Program FilesExpect-5.21bin

expect.exe就在這裡

 

3、寫個簡單的指令碼sample.txt

spawn telnet aixserver

expect "login:"

send "mynamer"

expect "Password:"

send "mypassr"

send "lsr"

send "prtconfr"

expect eof

 

PS:網頁的問題,指令碼中的“\”等符號會丟失。

 

4、執行命令expect sample.txt看看效果

 

5、看看expect的一些幫助資訊:

「開始」選單程式Expect-5.21Tcl 8.0 Shell with Expect

?help看看

 

 

 

本篇文章來源於 Linux公社網站()  原文連結:

 

 

 

 

 

 

 

 

 

 

 

expect 安裝

部落格分類:

TclLinuxRedHatBashGCC

最近搞一個自動配置,所以要寫一些bash,用到了expect , 發現沒有那個命令,所以自己安裝了一下,過程如下

1 . 首先檢查tcl 安裝了沒有

     rpm -qa|grep tcl

  結果顯示如下: tcl-8.4.13-4.el5
                          tclx-8.4.0-5.fc6

   結果表示已經安裝了 tcl  但是沒有安裝tcl0-devel  所以就要安裝

2. 安裝tcl-devel

     首先查一下linux 版本和作業系統的位數

       /proc/version

    結果如下  Linux version 2.6.18-194.el5 ()  (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48))

   x86 redhat  4.1

  下載檔案如下有 tcl-devel-8.4.13-4.el5.x86_64.rpm

 執行安裝:rpm -ivh tcl-devel-8.4.13-4.el5.x86_64.rpm   安裝成功

 

3. 安裝expect :

    下載expect 包,在附件中已有

     先要檢視tcl開發包安裝的位置   我的就安裝在/usr/local/bin 下,有些系統不一樣,是裝在/usr/bin

    解開expect-5.43.0.tar.gz

  ./configure --with-tcl=/usr/lib64 --with-tclinclude=/usr/include/tcl-private/generic

   make

  make install

  完成


4 .
編寫指令碼執行進執行出錯:-bash: ./scm.sh: /bin/sh/expect: bad interpreter:

   解決這個問題的辦法是:修改檔案頭  #!/usr/local/bin/expect

這樣OK

 

 

  由於最近要學習expect,所以便在自己的機器上面裝expect,網上找了好多文章看,但是還是出現了很多問題,於是把問題寫出來給後來的人一點小小的幫助,聊表心意。

        我是在turbolinux上面安裝的,而且是在vmware下面安裝的。

        檢查系統,發現tcl已經安裝了。

[root@rhel ~]# rpm -qa|grep tcl
tcl-8.4.13-3.fc6
tclx-8.4.0-5.fc6

後來才發現,因為expect需要重新編譯後安裝,那麼就需要tcl的開發包。

rpm -ivh --force tcl-devel-8.4.13-3.fc6.i386.rpm

    然後將expect-5.43包解開,開始讀INSTALL文件,系統管理員告訴我,不用讀,直接執行 ./configure --help開引數。確實好使,又土了一次 :-(

1.首先確定tcl開發包安裝的位置
rpm -qpl tcl-devel-8.4.13-3.fc6.i386.rpm|more

2.
然後根據引數,執行./configure
./configure --with-tcl=/usr/lib --with-tclinclude=/usr/include/tcl-private/generic

3.
執行
make

4.
執行
make install

    
   
完成第四步後,expect順利安裝成功。-:)

 

 

上面的是看的別人的文章,由於我的是trubolinux10.0的,所以出現了很多問題,在第2步的時候出現了--with-tcl=/usr/lib改為--with-tcl=/usr/lib64,但是編譯的時候還是出現了問題,錯誤是找不到tkConfig.sh,加了--with-tk=/usr/lib64,出現了問題是沒找到tk.h。發現系統沒有安裝tk,不知道為什麼別人的不用安裝tk,於是我安裝了,制定了安裝的目錄,算是編譯透過了,現在開始安裝。但是還是出現了一個問題[libexpect5.44.1.so] 錯誤 1。不知道是什麼問題,怎麼會出現這樣的問題呢?還是安裝不成功應該,所以在你們出現這樣的問題後,在另想辦法吧,少走彎路。

 

 

 

鬱悶了半天之後,問題還是要解決的。也是乎,把很多東西刪除掉重新來過。

終於發現問題的所在了,我下的expect的版本開始是expect-5.44.1.tar.gz ,之後我換了一個版本的expect-5.43.0.tar.gz ,而其他的還是一樣的步驟。可見版本升級了就會出現很多的問題。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27042095/viewspace-745585/,如需轉載,請註明出處,否則將追究法律責任。

相關文章