Python 脚本 - 使用参数启动 nmap

Python script - launch nmap with parameters

脚本启动应用程序 nmap。只是它不会将 var 打印到应用程序 nmap。但是,如果我单独打印它们,它会。

正在寻找一些建议,非常感谢。

Image script - Image output

脚本:

import os
import subprocess

xIP=input("Please enter IP-address to use on NMAP port-scan: ")
xOP=input("Please apply options to add on port-scan: ")

print("Entered values: ", xIP + xOP)

command = "nmap print xIP xOP"
#os.system(command)
subprocess.Popen(command)

input("Press ENTER to exit application...")

看这里:https://docs.python.org/3/library/subprocess.html#subprocess.Popen

拆分程序名和参数,它期望列表中的第一项是要运行的程序名。

对于您的情况,subprocess.Popen(command.split(' ')) 可能就足够了。

command = "nmap print xIP xOP"

这一行就是问题所在。首先,, subprocess.Popen() works best when the command is split into pieces in a collection like a list. Instead of using str.split() as they suggest, shlex.split() 是为此而设计的,如 Popen 文档中的示例所示。

但是,您遇到的另一个问题是您已将变量名放入字符串文字中,因此它们只是被视为字符串的一部分,而不是根据其内容进行评估。要获得您想要的行为,只需直接引用变量:

command = ["nmap", "print", xIP, xOP]
subprocess.Popen(command)