从 wpa_cli 状态获取 p2p_device_address

getting p2p_device_address from wpa_cli status

有什么方法可以从命令 "wpa_cli status" 中获取不同的信息,例如, p2p_device_address、ssid 等分开,?

我目前使用的是从 python 脚本中调用 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() 和 select 第 9 行,并进行一些字符串操作来获取 id,但是这将是一个 hack,它会让 wpa_cli 到 return 的地址只有多少,如果有的话?

尝试在Linux中使用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.