我正在尝试使用python扫描所有可用的wifi设备。我写了下面的代码来获取ssid、bssid和设备信息

results = subprocess.check_output(["sudo", "nmcli", "-f", "SSID", "BSSID", "DEVICE", "dev", "wifi"])

但它给了我一个错误-“bssid不理解”
linux - linux命令在python子进程中不起作用-LMLPHP
当我在终端运行下面的命令时,它工作正常。
sudo nmcli -f SSID,BSSID,DEVICE dev wifi

如果我删除bssid和设备,那么它可以正常工作。我得到了所有的SSID
results = subprocess.check_output(["sudo", "nmcli", "-f", "SSID",  "dev", "wifi"])

我不明白怎么回事。
我在用
Python-3.6.8
Ubuntu-18.04.2 LTS

最佳答案

你需要把论点作为

["sudo", "nmcli", "-f", "SSID,BSSID,DEVICE",  "dev", "wifi"]

如果最后一个命令行真的起作用。注意有一个参数"SSID,BSSID,DEVICE"
您还可以使用shlex生成列表:
import shlex

args = shlex.split("sudo nmcli -f SSID,BSSID,DEVICE dev wifi")
# ['sudo', 'nmcli', '-f', 'SSID,BSSID,DEVICE', 'dev', 'wifi']

09-25 18:03