我正在尝试自动进行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的选项。有人知道我在这里错过了什么吗?
我没有安装nmap
,但您需要设置shell=False
并拆分参数:
import subprocess
TOOL = 'ls'
joined = '-a -l'
target = '/tmp'
print(subprocess.call([TOOL, *joined.split(), target], shell=False))