0

以下のプログラムを使用して、別のデバイスに telnet で接続し、シリアル番号と Mac アドレスを出力します。

私の問題は、何らかの理由でコマンドを 1 回送信すると最初のコマンドがスキップされて 2 番目のコマンドが送信されることですが、同じコマンドを 2 回コピーするとコマンドが送信されることです。

コマンドを複数のコマンドを連続して送信する正しい方法は何ですか?

コマンドを送信するたびにバッファをフラッシュする必要がありますか?

私の環境

Eclipse Ide
Ubuntu 12.10
perl 5, version 14, subversion 2 (v5.14.2)

私のコードのスニペット:

$telnet = Net::Telnet->new($remoteSystem);
$| = 1;
$telnet->buffer_empty();
$telnet->buffer_empty(); 
$result = $telnet->input_log($errorlog);
#$_ = "@lines";
@TSN =$telnet->cmd('export | grep -e SerialNumber..[A-Z] | cut -d"\"" -f2');
@TSN =$telnet->cmd('export | grep -e SerialNumber..[A-Z] | cut -d"\"" -f2');

@mac = $telnet->cmd('ifconfig  | grep eth0 | cut -d" "  -f 11');

print "@TSN AND @TSN @mac";

print FH "$remoteSystem\n";

print "Telnetting into $remoteSystem .\n";    # Prints names of the tcd

close(telnet);
}

foreach (@host) {
    checkStatus($_);
}

OUTPUT 最初のコマンドをスキップします。

bash-2.02  AND bash-2.02  ifconfig  | grep eth0 | cut -d" "  -f 11
00:11:D9:3C:6E:02
bash-2.02 # 
bash-2.02 Telnetting into debug79-109 .

OUTPUT それは機能しますが、同じコマンドを 2 回送信する必要があります。

export | grep -e SerialNumber..[A-Z] | cut -d"\"" -f2
AE20001901E2FD1
bash-2.02 # 
bash-2.02  AND export | grep -e SerialNumber..[A-Z] | cut -d"\"" -f2
AE20001901E2FD1
bash-2.02 # 
bash-2.02  ifconfig  | grep eth0 | cut -d" "  -f 11
00:11:D9:3C:6E:02
bash-2.02 # 
bash-2.02 Telnetting into debug79-109 
4

2 に答える 2

0

cmd() への呼び出しでコマンド プロンプトを指定します。@TSN =$telnet->cmd('export | grep -e SerialNumber..[A-Z] | cut -d"\"" -f2', Prompt => 'bash-2.02 #');

于 2013-04-16T16:58:30.847 に答える