python - 从 wpa_cli 状态获取 p2p_device_address

标签 python linux wpa

有什么方法可以从命令“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() 并选择第 9 行,并进行一些字符串操作来获取 id,但这将是一个 hack,让 wpa_cli 仅返回地址(如果有的话)会更闷?

最佳答案

尝试在 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 的行。

关于python - 从 wpa_cli 状态获取 p2p_device_address,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27922190/

相关文章:

python - 自托管 Sphinx 文档中的多个版本

C++ 使用 linux 库 iwlib 确定安全类型(WEP 或 WPA)?

linux - 无法连接到 wpa_supplicant : wlan0 - re-trying

java - 使用 WPA 密码的所有允许的 ASCII 字符填充 java 数组

c# - .NET 的 X509Store 能否用于从远程 Linux 商店获取证书?

linux - 无法进入 MEX 函数

python - 使用 RLE 读取和压缩图片

python - 在 Python 中将字符串(使用科学记数法)转换为 int

Python/ Pandas /日期时间 : transform entire lists in a column to datetime

linux - 如何在 shell 脚本中从 mongo 数据库中获取确切的集合列表