bash script 模擬使用者輸入 - Linux

By Kumar
at 2008-11-13T11:22
at 2008-11-13T11:22
Table of Contents
※ 引述《winter0128 (winter0128)》之銘言:
: #!/bin/bash
: for((i=1;i<=5;i++))
: do
: <<ZZZ
: ./test1
: $i
: ZZZ
: done
: 推 antontw:搞錯對象,應該用 expect 而不是 bash 11/13 01:04
: → antontw:<< 不是丟到 test1 的 stdin ,所以沒用 11/13 01:05
: → winter0128:可以實際寫出來解釋嗎,還是不太懂 11/13 11:01
expect 是可程式化用在互動模式上的一個對話模組
( programmed dialogue with interactive programs )
# 在 Ubuntu 底下,需要 apt-get install expect
一個簡單的範例:
cat tftpput
<code>
#!/usr/bin/expect
spawn tftp 192.168.1.1
expect tftp>
send bin\r
expect tftp>
send "put $argv\r"
expect tftp>
send quit\r
interact
</code>
使用方式:
./tftpput file.bin
說明:
tftp 連上線,看到 "tftp>" 字串時會丟出 bin 換行,把傳輸 mode 設作 binary
接著等 tftp server 有回應字串,再送出 put file.bin 把 file.bin
送到 tftp server 上面,等做完, tftp server 有回應字串,再送出離開字串,
回到交談模式。
一般程式的回應過程會有很多變數延遲,
也很少那麼剛好就是前面接收程式輸入的點,
所以建議會用 expect 來做這件事情。
--
不過你的 test1 沒有寫明是什麼交談內容,所以我就沒寫"可能"的結果了~
(* ^^*) <--- 其實是 expect 也沒多熟~
--
人不作出犧牲,便得不到任何收穫;如果要得到某種東西,就必須付出同等代價。這一點
,就是鍊金術的基本原則 ── 等價交換。當時我們深信這一點就是世界的真理。
阿爾風斯‧愛力克,《鋼之鍊金術師》開場白
--
: #!/bin/bash
: for((i=1;i<=5;i++))
: do
: <<ZZZ
: ./test1
: $i
: ZZZ
: done
: 推 antontw:搞錯對象,應該用 expect 而不是 bash 11/13 01:04
: → antontw:<< 不是丟到 test1 的 stdin ,所以沒用 11/13 01:05
: → winter0128:可以實際寫出來解釋嗎,還是不太懂 11/13 11:01
expect 是可程式化用在互動模式上的一個對話模組
( programmed dialogue with interactive programs )
# 在 Ubuntu 底下,需要 apt-get install expect
一個簡單的範例:
cat tftpput
<code>
#!/usr/bin/expect
spawn tftp 192.168.1.1
expect tftp>
send bin\r
expect tftp>
send "put $argv\r"
expect tftp>
send quit\r
interact
</code>
使用方式:
./tftpput file.bin
說明:
tftp 連上線,看到 "tftp>" 字串時會丟出 bin 換行,把傳輸 mode 設作 binary
接著等 tftp server 有回應字串,再送出 put file.bin 把 file.bin
送到 tftp server 上面,等做完, tftp server 有回應字串,再送出離開字串,
回到交談模式。
一般程式的回應過程會有很多變數延遲,
也很少那麼剛好就是前面接收程式輸入的點,
所以建議會用 expect 來做這件事情。
--
不過你的 test1 沒有寫明是什麼交談內容,所以我就沒寫"可能"的結果了~
(* ^^*) <--- 其實是 expect 也沒多熟~
--
人不作出犧牲,便得不到任何收穫;如果要得到某種東西,就必須付出同等代價。這一點
,就是鍊金術的基本原則 ── 等價交換。當時我們深信這一點就是世界的真理。
阿爾風斯‧愛力克,《鋼之鍊金術師》開場白
--
Tags:
Linux
All Comments
Related Posts
emacs的複製和貼上

By Blanche
at 2008-11-13T11:07
at 2008-11-13T11:07
bash script 模擬使用者輸入

By Ula
at 2008-11-13T00:23
at 2008-11-13T00:23
Ubuntu8.10的網路問題

By Jack
at 2008-11-12T23:37
at 2008-11-12T23:37
Re: mount -oloop 問題?

By Todd Johnson
at 2008-11-12T23:32
at 2008-11-12T23:32
Ubuntu8.10的網路問題

By Brianna
at 2008-11-12T22:17
at 2008-11-12T22:17