在Pythonscript中获取Netcat的输出

Kok*_*esh 1 python shell netcat

我需要在python脚本中从netcat获取输出.我目前的代码是

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

我希望它检查200 *状态并使用它,但它似乎每次在循环中运行时等待我的输入.我如何打开netcat,得到它的结果,关闭它并继续前进?

geo*_*car 6

不要那样做.

Python内置了一个smtp客户端库,可以轻松完成.真.有没有理由不使用它.

from smtplib import SMTP
SMTP('smtp.myserver.net')
Run Code Online (Sandbox Code Playgroud)

就这么简单.抓住你关心的例外.

如果你真的想知道你做错了什么,

您的程序正在等待您输入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 ***")
Run Code Online (Sandbox Code Playgroud)

您需要这样做的原因是默认标准输入仍然连接netcat到您的终端.

  • 将``--recv-only``传递给ncat也应该有效. (2认同)