1

Pythonスクリプトでnetcatから出力を取得する必要があります。私の現在のコードは

  response = subprocess.Popen(["netcat","smtp.myserver.net", "25"], stdout=subprocess.PIPE).stdout.read()
  x = response.find("220 ***")

200 *ステータスをチェックして処理したいのですが、ループで実行されるたびに入力を待機しているようです。どうすればnetcatを開いて結果を取得し、閉じて先に進むことができますか?

4

1 に答える 1

6

そうしないでください。

Pythonには、これを簡単に実行できるSMTPクライアントライブラリが組み込まれています。本当に。使わない理由はありません。

from smtplib import SMTP
SMTP('smtp.myserver.net')

とても簡単です。気になる例外をキャッチします。

自分が何を間違えているのかを本当に知りたいのなら、

あなたのプログラムはあなたがタイプするのを待っていましたquit

解決?最初に書き込み終了を閉じます。

child = subprocess.Popen(["netcat","smtp.myserver.net", "25"],
    stdout=subprocess.PIPE,
    stdin=subprocess.PIPE)
child.stdin.close()
response = child.stdout.read()
x = response.find("220 ***")

これを行う必要がある理由は、デフォルトでは標準入力がまだnetcat端末に接続されているためです。

于 2012-08-27T10:42:10.127 に答える