import subprocessfrom subprocess import Popenp = Popen(['nmap', '-sn', '***.***.*.*'])out, err = p.communicate()print(out)O/p 如下:----> 必须存储到文本文件中Starting Nmap 7.70 ( https://nmap.org ) at 2018-12-11 04:26 *****n Standard TimeNmap scan report for ***.***.*.*Host is up (0.00s latency).MAC Address: **:**:**:**:**:BF (***** *****(******)Co.)Nmap done: 1 IP address (1 host up) scanned in 3.82 seconds
3 回答
蝴蝶刀刀
TA贡献1801条经验 获得超8个赞
您的代码正在将您想要的输出发送到屏幕上。要将其发送到文件,请更改以下内容:
print(out)
到
with open("my_output.txt", "w") as outfile: print(out, file=outfile)
交互式爱情
TA贡献1712条经验 获得超3个赞
根据文档:
请注意,如果要将数据发送到进程的 stdin,则需要使用 stdin=PIPE 创建 Popen 对象。同样,要在结果元组中获得除 None 之外的任何内容,您还需要提供 stdout=PIPE 和/或 stderr=PIPE 。
所以在你的情况下你应该写:
from subprocess import Popen, PIPE
p = Popen(['nmap', '-sn', '***.***.*.*'], stdout = PIPE, stderr = PIPE)
out, err = p.communicate()
这应该有效。
拉莫斯之舞
TA贡献1820条经验 获得超10个赞
请检查
import subprocess
out = subprocess.check_output(['nmap', '-sn', '***.***.*.*'])
with open("./my.txt", "wb") as f:
f.write(out)
添加回答
举报
0/150
提交
取消