猿问

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

import subprocess

from subprocess import Popen

p = 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 Time

Nmap 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


尚方宝剑之说
浏览 233回答 3
3回答

蝴蝶刀刀

您的代码正在将您想要的输出发送到屏幕上。要将其发送到文件,请更改以下内容:print(out)到with open("my_output.txt", "w") as outfile:     print(out, file=outfile)

交互式爱情

根据文档:请注意,如果要将数据发送到进程的 stdin,则需要使用 stdin=PIPE 创建 Popen 对象。同样,要在结果元组中获得除 None 之外的任何内容,您还需要提供 stdout=PIPE 和/或 stderr=PIPE 。所以在你的情况下你应该写:from subprocess import Popen, PIPEp = Popen(['nmap', '-sn', '***.***.*.*'], stdout = PIPE, stderr = PIPE)out, err = p.communicate()这应该有效。

拉莫斯之舞

请检查import subprocessout = subprocess.check_output(['nmap', '-sn', '***.***.*.*'])with open("./my.txt", "wb") as f:    f.write(out)
随时随地看视频慕课网APP

相关分类

Python
我要回答