Команда Linux не работает в подпроцессе Python - PullRequest
1 голос
/ 19 июня 2019

Я пытаюсь отсканировать все доступные устройства Wi-Fi, используя python.Я написал код ниже, чтобы получить SSID, BSSID и информацию об устройстве

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

Но это выдает мне ошибку - "bssid не понял"

enter image description here

когда я запускаю указанную ниже команду в терминале, она работает нормально.

sudo nmcli -f SSID,BSSID,DEVICE dev wifi

Если я удаляю BSSID и DEVICE, то она работает нормально.И я получаю все ssids

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

Я не мог понять, что происходит не так.

Я использую

Python-3.6.8
Ubuntu-18.04.2 LTS

1 Ответ

2 голосов
/ 19 июня 2019

вам нужно передать аргументы как

["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']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...