Skip to main content
 首页 » 编程设计

python之在 Pythonscript 中获取 Netcat 的输出

2025年05月04日17findumars

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

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

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

请您参考如下方法:

不要那样做。

Python 有一个内置的 smtp client library可以轻松做到这一点。真的。 没有不使用它的理由。

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 连接到您的终端。