使用python子进程执行命令并隐藏控制台窗口

时间:2018-07-05 16:16:47

标签: python subprocess

enter image description here我想使用subprocess.popen并执行airodump --bssid xxxx:xxxx:xxxx:xxxx - c xxx:xxxx:xxx:xxxx -w tmp.ivs,但是它有一个控制台窗口,我想将其隐藏。

for ap in aps:
    args = "airodump-ng --bssid {BSSID} -c {CH} --output-format netxml -w {name}.ivs wlan0mon".format(
        BSSID=ap.get("BSSID"),
        CH=ap.get(' channel'),
        name=ap.get("BSSID"))
    print(args)
    p=multiprocessing.Process(subprocess.Popen,args=(args.split(),))
    p.start()
    p.join()

当我在kali上运行此代码时,所有控制台窗口都出来了,所以我想隐藏所有窗口。我搜索了很长时间,但仍然不知道该怎么做,所以谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

import multiprocessing
import subprocess

def executeCommand(exeArgs, output):
    commandProcess = subprocess.Popen(exeArgs.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    out, err = commandProcess.communicate()

    output.put(out)

command = "Your command Here"
output = multiprocessing.Queue()
p = multiprocessing.Process(target=executeCommand, args=(command, output) )
p.start()
p.join()
#print output.get()

您可以看到最后一行已注释。这样,我不会在终端中显示任何内容,但是如果您要打印它,则始终可以取消注释。

我想这就是你想要的。