◆recvコマンドで検出文字列が予定より早く検出される

一部のOSでは1文字入力毎にその行を書き直していることがあります。
具体的にはRedhat Linuxでsuでrootになった際にこの現象が発生します。
例えばプロンプトが
"[root@linux home]# "
であるとして、"pwd"と入力するとこれらの文字を入れるたびに以下のようにエコーバックされます。
"[root@linux home]# p"
"[root@linux home]# pw"
"[root@linux home]# pwd "
または同じ行を2回書き直し
"[root@linux home]# p"
"[root@linux home]# p"
"[root@linux home]# pw"
"[root@linux home]# pw"
"[root@linux home]# pwd"
"[root@linux home]# pwd"
と来る場合があります。
そのため、rootにログイン後のスクリプトを
recv "#"
send "pwd\r"
recv "#"
と記述し、"pwd"が終わった後の"#"を待つつもりでいても、上のように1文字ごとに
エコーバックされるため、"p"を入れた時点で2回目の「recv "#"」で検出してしまいます。

これを回避するには
recv "#"
send "pwd"
recv "pwd"
recv "#"
または2行表示される場合は
recv "#"
send "pwd"
recv "pwd"
recv "pwd"
recv "#"
としてください。


SNMP WEB BOARD FAQへ戻る