2016-05-11 48 views
4

私のexpectスクリプトで長いコマンドを送信する際に問題があります。私は、ルータにアクセスするTelnetを使用しています:bashスクリプトで長いコマンドを送信できないExpect

#! /usr/bin/expect -f 
# 
# 

spawn telnet 192.168.0.5 

expect { 
    "login:" 
    { 
     send "admin\r" 
     expect "Password:" 
     send "admin\r" 

     expect ">" 
     send "enable\r" 
     expect "Password:" 
     send "\r" 

     # My Command 
     expect "#" 
     send "terminal length 0\r" 
     expect "#" 
     send "show running-config | include ip nat pool-group\r" 
    } 
} 

expect "#" 
send "exit\r" 

私は

<?php 
exec(mybinfile , $returnvalue); 
print_r($returnvalue); 

上記のスクリプトを実行するために、PHPでのexecを使用しています、私は出力をチェックすると、それは誤ったコマンドのように見えてきました送信されます。しかし、それでも、それは働いています。なぜそれはそれを出力するのですか?結果は次のようになります

[14] => R1#terminal length 0 
[15] => R1#show running-config | include ip nat pool-gro$ng-config | include ip nat pool-grou   $ng-config | include ip nat pool-group 

私は以下の例のように、私のコマンドの文字数を減らすことを試み、それは結構です。その場合

show running-config | include ip nat pool-gro 

は、私は問題が発生します私はprint_rで見ることができる出力ですか?

+0

'それがprint_rで見ることができる出力であれば問題に遭遇しますか?いいえ問題はありません。文字列が長くなればなるほど、それはよりぎこちなくなるでしょう。 – Jahid

+0

これは、削除デバイス、telnet自体、およびtelnetからの出力をキャプチャする方法の組み合わせです。それは「どのように期待されているのか」や「不気味な」ものではありません。そのデバイスに "手動で" telnet接続すると、テキストの一部が太字またはハイライト表示されますか? –

答えて

0

terminal length 0コマンドの発行に加えて、terminal width 511コマンドを発行して改行を防止することもできます。これにより、私たちにとっても同様の問題は解決しました。 the documentationから

はコンソールセッション中の情報を表示するための幅を設定するには、グローバルコンフィギュレーションモードでターミナル幅コマンドを使用します。無効にするには、このコマンドの形式を使用します。

ターミナル幅

なしの端子幅

はServerFaultの上でもthis questionを参照してください。

関連する問題