为了账号安全,请及时绑定邮箱和手机立即绑定

从 python 运行 shell 命令,以及如何将结果存储在文件中

从 python 运行 shell 命令,以及如何将结果存储在文件中

尚方宝剑之说 2021-09-14 13:57:50
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)


查看完整回答
反对 回复 2021-09-14
?
交互式爱情

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()

这应该有效。


查看完整回答
反对 回复 2021-09-14
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

请检查


import subprocess

out = subprocess.check_output(['nmap', '-sn', '***.***.*.*'])

with open("./my.txt", "wb") as f:

    f.write(out)


查看完整回答
反对 回复 2021-09-14
  • 3 回答
  • 0 关注
  • 232 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信