作者 主題: 請問expect....  (閱讀 7935 次)

0 會員 與 1 訪客 正在閱讀本文。

sincat

  • 憂鬱的高中生
  • ***
  • 文章數: 102
    • 檢視個人資料
請問expect....
« 於: 2006-03-07 15:42 »
請問我如何用expect  抓取一個 外部文字檔
將每一行放入陣列內

另一個問題是 我可以執行一個expect script 後面帶參數嗎?
如果可以 那如何取得那個參數的值
謝謝

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
Re: 請問expect....
« 回覆 #1 於: 2006-03-07 16:43 »
引述: "sincat"
請問我如何用expect  抓取一個 外部文字檔
將每一行放入陣列內

另一個問題是 我可以執行一個expect script 後面帶參數嗎?
如果可以 那如何取得那個參數的值
謝謝


參數
set args [lindex $argv 0]

file 每一行變成 array 我不知道
通常我是這樣讀檔
set line [ exec cat FILE ]

你若要成 fread/fgets 型式,我想 tk/tcl 的語法要修行一下

蒼邪

  • 憂鬱的高中生
  • ***
  • 文章數: 199
    • 檢視個人資料
Re: 請問expect....
« 回覆 #2 於: 2006-03-08 11:25 »
引述: "abelyang"
引述: "sincat"
請問我如何用expect  抓取一個 外部文字檔
將每一行放入陣列內

另一個問題是 我可以執行一個expect script 後面帶參數嗎?
如果可以 那如何取得那個參數的值
謝謝


參數
set args [lindex $argv 0]

file 每一行變成 array 我不知道
通常我是這樣讀檔
set line [ exec cat FILE ]

你若要成 fread/fgets 型式,我想 tk/tcl 的語法要修行一下


請問一下先進為什麼我用類似set  args[lindex $argv 0]這種方法去執行就會出現:
代碼: [選擇]
wrong # args: should be "set varName ?newValue?"

google找了好久都沒結果……能請先進解答嗎……感激不儘啊!
*萬般帶不走,唯有業隨身**

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
Re: 請問expect....
« 回覆 #3 於: 2006-03-08 11:57 »
引述: "蒼邪"
引述: "abelyang"
引述: "sincat"
請問我如何用expect  抓取一個 外部文字檔
將每一行放入陣列內

另一個問題是 我可以執行一個expect script 後面帶參數嗎?
如果可以 那如何取得那個參數的值
謝謝


參數
set args [lindex $argv 0]

file 每一行變成 array 我不知道
通常我是這樣讀檔
set line [ exec cat FILE ]

你若要成 fread/fgets 型式,我想 tk/tcl 的語法要修行一下


請問一下先進為什麼我用類似set  args[lindex $argv 0]這種方法去執行就會出現:
代碼: [選擇]
wrong # args: should be "set varName ?newValue?"

google找了好久都沒結果……能請先進解答嗎……感激不儘啊!

這我就不清楚了, 我用的版本是 5.3.2 , 並沒有發生這個問題

蒼邪

  • 憂鬱的高中生
  • ***
  • 文章數: 199
    • 檢視個人資料
Re: 請問expect....
« 回覆 #4 於: 2006-03-08 12:50 »
引述: "abelyang"
引述: "蒼邪"
引述: "abelyang"
引述: "sincat"
請問我如何用expect  抓取一個 外部文字檔
將每一行放入陣列內

另一個問題是 我可以執行一個expect script 後面帶參數嗎?
如果可以 那如何取得那個參數的值
謝謝


參數
set args [lindex $argv 0]

file 每一行變成 array 我不知道
通常我是這樣讀檔
set line [ exec cat FILE ]

你若要成 fread/fgets 型式,我想 tk/tcl 的語法要修行一下


請問一下先進為什麼我用類似set  args[lindex $argv 0]這種方法去執行就會出現:
代碼: [選擇]
wrong # args: should be "set varName ?newValue?"

google找了好久都沒結果……能請先進解答嗎……感激不儘啊!

這我就不清楚了, 我用的版本是 5.3.2 , 並沒有發生這個問題


感謝先進的回答,我是Fedora Core4,預設版本是5.4開頭的版本,看來我要想辦法把這套件弄成5.3.2了……
*萬般帶不走,唯有業隨身**

蒼邪

  • 憂鬱的高中生
  • ***
  • 文章數: 199
    • 檢視個人資料
請問expect....
« 回覆 #5 於: 2006-03-08 13:48 »
  請問先進你的環境是?因為我找不到5.3.2版的……那tcl和tk這些套件也要跟著換舊的嗎?
*萬般帶不走,唯有業隨身**

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
請問expect....
« 回覆 #6 於: 2006-03-08 13:56 »
引述: "蒼邪"
  請問先進你的環境是?因為我找不到5.3.2版的……那tcl和tk這些套件也要跟著換舊的嗎?

這我不確定, 我跑 expect 的程式都是在 RH7.3 上跑的,
而 expect , tk/tcl 也都是 RH7.3 安裝時裝的

蒼邪

  • 憂鬱的高中生
  • ***
  • 文章數: 199
    • 檢視個人資料
請問expect....
« 回覆 #7 於: 2006-03-08 14:45 »
引述: "abelyang"
引述: "蒼邪"
  請問先進你的環境是?因為我找不到5.3.2版的……那tcl和tk這些套件也要跟著換舊的嗎?

這我不確定, 我跑 expect 的程式都是在 RH7.3 上跑的,
而 expect , tk/tcl 也都是 RH7.3 安裝時裝的


嗯嗯,謝謝先進的回答,我會再想辦法的……
*萬般帶不走,唯有業隨身**

sincat

  • 憂鬱的高中生
  • ***
  • 文章數: 102
    • 檢視個人資料
請問expect....
« 回覆 #8 於: 2006-03-08 15:07 »
我用FC4 沒問題喔

expect-5.43.0-1

蒼邪

  • 憂鬱的高中生
  • ***
  • 文章數: 199
    • 檢視個人資料
請問expect....
« 回覆 #9 於: 2006-03-08 16:36 »
引述: "sincat"
我用FC4 沒問題喔

expect-5.43.0-1


sincat先進你好,聽到這句話很高興……那表示是我自己的問題囉……先進可以幫我看看嗎?我的code如下:

代碼: [選擇]

#!/usr/bin/expect
set timeout 20 #If it all goes pear shaped the script will timeout after 20 seconds.

set name [lindex $argv 0] #First argument is assigned to the variable name

set user [lindex $argv 1] #Second argument is assigned to the variable user

set password [index $argv 2] #Third argument is assigned to the variable password


spawn telnet $name #This spawns the telnet program and connects it to the variable name


expect "login:" #The script expects login

send "$user " #The script sends the user variable

expect "Password:" #The script expects Password

send "$password " #The script sends the password variable

interact #This hands control of the keyboard over two you (Nice expect feature!)


執行expect ./test.exp 192.168.10.23 myname mypassword後
第一行就掛了,錯誤訊息如下:
代碼: [選擇]

wrong # args: should be "set varName ?newValue?"
    while executing
"set timeout 20 #If it all goes pear shaped the script will timeout after 20 seconds. "
    (file "./test.exp" line 2)


這是後在網路上看到別人用的script,就照用看看,結果為什麼就是不行呢?
還煩請先進回答!謝謝…!!
*萬般帶不走,唯有業隨身**

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
請問expect....
« 回覆 #10 於: 2006-03-09 09:33 »
timeout 可能是保留字的關係嗎 ?

蒼邪

  • 憂鬱的高中生
  • ***
  • 文章數: 199
    • 檢視個人資料
請問expect....
« 回覆 #11 於: 2006-03-09 13:06 »
引述: "abelyang"
timeout 可能是保留字的關係嗎 ?


謝謝abel先進……但把這行註解掉後面的還是一樣的錯誤訊息……這我試過了……

現在又發現如果在PHP執行passthru()函數去呼叫Linux上面的script的話,不能做字串處理……看來又是個問題了…@_@
*萬般帶不走,唯有業隨身**