popen没有正确转发args - Python

时间:2015-01-01 02:13:23

标签: python linux

我正在使用Raspbian并尝试使用带有 popen 功能的python运行一个非常简单的cmd。 我是 linux python

的新手
from subprocess import Popen, PIPE
po = Popen(['airmon-ng', 'start wlan0 10'], stdin=PIPE, stdout=PIPE, stderr=PIPE)

proc = Popen(args, stdout=PIPE, stderr=PIPE)
out, err = proc.communicate()
out

返回

'\n\nusage: airmon-ng <start|stop|check> <interface> [channel or frequency]\n\n'

当仅运行 airmon-ng 而没有参数时,可以在popen函数之外创建返回的错误消息,这让我相信 popen 不会转发 args 正确。

1 个答案:

答案 0 :(得分:4)

您需要正确分离comamnd行参数; startwlan010应该是分开的命令行参数:

proc = Popen(['airmon-ng', 'start', 'wlan0', '10'],
             stdin=PIPE, stdout=PIPE, stderr=PIPE)
out, err = proc.communicate()
print(out)

问题的方式就像在shell中调用命令一样:

airmon-ng 'start wlan0 10'

不同于:

airmon-ng start wlan0 10