Получение p2p_device_address из статуса wpa_cli
Есть ли способ получить различную информацию из команды "wpa_cli status", например, p2p_device_address, ssid и т. Д. Отдельно?
В настоящее время я использую вызов wpa_cli из скрипта Python:
import subprocess
cmd = "wpa_cli -i wlan3 status"
p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT, close_fds=True)
output = p.stdout.read()
мой вывод распечатан как:
bssid=xx:xx:xx:xx:xx:xx
ssid=lifa_2
id=0
mode=station
pairwise_cipher=CCMP
group_cipher=CCMP
key_mgmt=WPA2-PSK
wpa_state=COMPLETED
ip_address=192.168.0.104
p2p_device_address=xx:xx:xx:xx:xx:xx
address=xx:xx:xx:xx:xx:xx
uuid=xxxxx-xxxx-xxxx-xxxx-xxxxxxx
что я хочу здесь, это только p2p_device_address, т.е.
output = p.stdout.read() # in this case ouput must be a string containing only the address
Что я думаю о себе, так это использую str.split() и выбираю строку 9 и выполняю некоторые манипуляции со строками для получения идентификатора, однако это будет взломом, так как будет очень легко позволить wpa_cli возвращать только адрес если есть?
1 ответ
Решение
Попробуй использовать pipe
в Linux:
import subprocess
cmd = "wpa_cli -i wlan3 status | grep ip_address"
p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT, close_fds=True)
output = p.stdout.read()
Тогда вы получите единственную строку с ip_address
,