2017-07-12 8 views
-1

私は期待したスクリプトを新たに学習し始めました。次のコードで何が起こっているのか理解してください。予想されるスクリプトで複数のスポーンが発生する

#!/usr/bin/expect 
global slawn_id 
set timeout -1 
spawn NoPktdrop.exp 
spawn perl NoPktDrop.pl NoPktDrop 
spawn NoPktDrop.exp 
spawn perl NoPktDrop.pl NoPktDrop 
interact 

the code of NoPktdrop.exp is as follows. 

#!/usr/bin/expect 
set timeout -1 
while {1} { 
spawn telnet server 
sleep 1 
expect { 
    "Escape character" { 
      send "\r" 
      expect "SP*>*%" 

      break 
     } 
     "Connection refused" { 
       break 

     } 
    } 
} 
      send "\x1D" 
      expect "telnet> " 
      send "q\r" 
      expect "Connection*%" 

とPerlスクリプトはいくつかのコードを持って次のようにコードでone.expというファイルがあります。

最初にexpectスクリプトを実行する必要があり、NoPktDroplogを生成したら、いくつかのチェックのためにperlスクリプトにログを与える必要があります。私は何らかの理由でそれを繰り返す必要がある。しかし、私は期待されるスクリプトが実行されていないのを見ている。 perlスクリプトのみが実行されます。理由を教えてください。

答えて

0
spawn NoPktdrop.exp 
spawn perl NoPktDrop.pl NoPktDrop 
spawn NoPktDrop.exp 
spawn perl NoPktDrop.pl NoPktDrop 
interact 

上記のコードを以下のように変更しました。それは働いた。理由がわからないありがとう。

spawn NoPktdrop.exp 
expect eop 
spawn perl NoPktDrop.pl NoPktDrop 
expect eop 
spawn NoPktDrop.exp 
expect eop 
spawn perl NoPktDrop.pl NoPktDrop 
expect eop 
+0

あなたが望む 'eof'ない' eop' - EOFをexpecingすると、あなたが完了するために生成されたプロセスのために(タイムアウト値まで)待つ必要があります。 –

+0

理由を提供してくれたグレンに感謝します。私はなぜ私が相互作用を取り除く必要があるかについても言及できますか?私は正確に相互作用が必要な場所を得ることができません。 – sri

関連する問題