python - 带有 args 的子进程调用仅读取第一个 arg

标签 python subprocess

<分区>

我正在尝试自动执行 nmap 扫描,并且我正在使用 subprocess 模块来执行此操作。我几乎将三个变量传递给 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))

关于python - 带有 args 的子进程调用仅读取第一个 arg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51285073/

相关文章:

Python3/Linux - 在默认编辑器中打开文本文件并等待完成

python - 在 python 子进程 popen 中格式化命令

python - 在Python中,如果错误将被重新引发,是否有任何理由使用try/except?

python - Python 中生成列和行总和小于 2 的所有 6x6 (0,1) 矩阵的最有效算法?

python - 具有渐变颜色的 Bokeh 散点图

python - 无法使用具有身份文件的子进程进行 SSH

python - 将文件路径从 Python 传递到 shell 脚本

python - 如何在 Pandas (python 3) 中组合不同的数据集?

Python:计算csv文件中每小时的平均值和标准偏差

python - 子进程检查输出错误