0

結論

  • このスクリプトは、socket.recv()からLinuxターミナルまですべてを出力するわけではありません。
  • インタプリタで同じことをすると、すべてのデータが端末に出力されます。

(たとえば、IPにローカルゲートウェイを使用し、ポートに23を使用しているため、ルーターにtelnetします)

import socket
q = socket.socket()
q.connect(ip, port)
data = q.recv(1024)
print data

インタプリタの出力は4行です。

(最初の行にあるaltコードの
ジブリッシュなど)RT v24-sp2 std(c)2012 NewMedia-NET GmbH
リリース:03/21/12(SVNリビジョン:18795)
DD-WRTログイン:

スクリプトからの出力:

(最初の行からのaltコードのジブリッシュ)

なぜこれが起こっているのか、そしてそれを修正する方法に関するアドバイスをいただければ幸いです。

ありがとう、

アンドリュー

4

1 に答える 1

1

コマンドを 1 つずつゆっくりと実行すると、ルーターは、送信する予定のすべてを送信してから、q.recv(1024).

スクリプトから実行すると、コマンドが立て続けに実行されます。スクリプトが実行q.recv(1024)されると、ルーターはすべてのデータではなく一部のデータのみを送信できました。

ループを使用して戻ってさらにデータを読み取ろうとしないため、これで終わりです。これ以上データを受信 (または印刷) することはありません。

(ちなみに、「alt-code 意味不明」とは一体何ですか? ここで得られるのは、telnet プロトコル ネゴシエーションの一部であるバイナリ データです。)

于 2013-01-30T02:26:05.780 に答える