我正在尝试使nmap扫描自动化,并且正在使用子进程模块来做到这一点。我几乎将三个变量传递给subprocess.call并运行命令。这是我的代码
import subprocess
TOOL = 'nmap'
joined = '-p1 5000'
target = 'localhost'
subprocess.call([TOOL, joined, target], shell=True)
这应该导致nmap -p1 5000 localhost
在我的系统上运行,这是一个有效的命令,但是,调用方法似乎只能识别TOOL(nmap),它只是打印出nmap的选项。有人知道我在这里想念的吗?
答案 0 :(得分:3)
我没有安装nmap
,但是您需要设置shell=False
并拆分参数:
import subprocess
TOOL = 'ls'
joined = '-a -l'
target = '/tmp'
print(subprocess.call([TOOL, *joined.split(), target], shell=False))