Получение 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,

Другие вопросы по тегам