【发布时间】:2020-07-09 14:41:24
【问题描述】:
我正在尝试在 linux 中使用 nmap 命令的输出(shell 输出):
sudo nmap -sn 192.168.1.0/24
------
Nmap scan report for 192.168.1.98
Host is up (0.094s latency).
MAC Address: B8:27:EB:CE:0A:9F (Raspberry Pi Foundation)
在 python 脚本中通过子进程:
import subprocess
p = subprocess.Popen(["nmap", "-sn", "192.168.1.0/24"], stdout=subprocess.PIPE)
output, err = p.communicate()
print ("*** Running nmap -sn 192.168.1.0/24 ***\n", output)
除了我需要 shell 输出具有的 MAC 行而 subprocess 不需要这一事实之外,这非常有效。
子进程输出:
\nNmap scan report for 192.168.1.98\nHost is up (0.015s latency).\n
我正在研究通过 MAC/名称获取 IP 的想法,如果没有那条线,我看不到如何做...
【问题讨论】:
-
您是否以 root 身份运行脚本?
-
我不认为它正在写入标准错误。您是否尝试过使用 sudo 作为前缀?虽然,使用包是更好的方法。
-
感谢@CMinusMinus!这解决了它....
标签: python subprocess output nmap