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,得到它的结果,关闭它并继续前进?
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到您的终端.