首页 > 解决方案 > 使用python子进程执行命令并隐藏控制台窗口

问题描述

在此处输入图像描述我想使用 subprocess.popen 和 excute 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上运行这段代码时,所有的控制台窗口都出来了,所以我想隐藏所有的窗口。找了好久还是不知道怎么弄,如果能帮到我,谢谢。

标签: pythonsubprocess

解决方案


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()

如您所见,最后一行已注释。这样我就不会在终端中显示任何内容,但如果你想打印它,你总是可以取消注释它。

我认为这就是你想要的。


推荐阅读