2015-01-13 8 views
0

"wpa_cli status"명령에서 다른 정보를 얻을 수있는 방법이 있습니까? 예 : p2p_device_address, ssid 등?wpa_cli 상태에서 p2p_device_address 가져 오기

내 출력으로 출력됩니다
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입니다

무엇 내가 현재 사용하고하는 것은 파이썬 스크립트에서 wpa_cli 호출하는 것입니다

output = p.stdout.read() # in this case ouput must be a string containing only the address 

내 자신이 생각하는 것은 str.split()을 사용하고 9 행을 선택하는 것입니다. ID를 얻으려면 일부 문자열 조작이 필요하지만 해킹이 될 수 있습니다. wpa_cli가 주소 만 반환하게하는 것이 좋지 않을까요?

답변

0

리눅스에서 pipe를 사용해보십시오 :

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으로 만 라인을 얻을 것이다.