2015-01-13 3 views
0

Есть ли способ получить различную информацию из команды «статус wpa_cli», например, p2p_device_address, ssid и т. Д. Отдельно,?Получение p2p_device_address из состояния wpa_cli

То, что я в настоящее время использую это вызов wpa_cli из питона сценария:

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 возвращать только адрес, если он есть?

ответ

0

Попробуйте использовать 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.