使用Python解析OpenVPN状态日志
项目描述
openvpn-status 是一个Python库。它解析OpenVPN状态日志并将其转换为Python数据结构。
它与Python 2.7,3.6 到 3.10 以及PyPy兼容。
安装
pip install openvpn-status
别忘了将它放在 setup.py / requirements.txt 中。
入门
您可以为OpenVPN服务器配置客户端状态日志。通常,可以通过将 status /path/to/openvpn-status.log 行添加到 /etc/openvpn/openvpn.conf 来实现。例如
proto udp port 1194 dev tun0 status /var/run/openvpn-status.log
一旦OpenVPN服务器运行,日志文件将被创建并写入。它看起来像
OpenVPN CLIENT LIST Updated,Thu Jun 18 08:12:15 2015 Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since foo@example.com,10.10.10.10:49502,334948,1973012,Thu Jun 18 04:23:03 2015 bar@example.com,10.10.10.10:64169,1817262,28981224,Thu Jun 18 04:08:39 2015 ROUTING TABLE Virtual Address,Common Name,Real Address,Last Ref 192.168.255.134,foo@example.com,10.10.10.10:49502,Thu Jun 18 08:12:09 2015 192.168.255.126,bar@example.com,10.10.10.10:64169,Thu Jun 18 08:11:55 2015 GLOBAL STATS Max bcast/mcast queue length,0 END
现在我们可以使用这个库来解析日志文件
from openvpn_status import parse_status
with open('/var/run/openvpn-status.log') as logfile:
status = parse_status(logfile.read())
print(status.updated_at) # datetime.datetime(2015, 6, 18, 8, 12, 15)
foo_client = status.client_list['169.254.0.1']
print(foo_client.common_name) # foo@example.com
print(foo_client.bytes_received) # 334.9 kB
print(foo_client.bytes_sent) # 2.0 MB
print(int(foo_client.bytes_sent)) # 2097152
更多详情请参阅 API参考。
贡献
如果您想报告错误或请求功能,请随时在 GitHub 上创建问题。
当然,欢迎提交拉取请求。
项目详情
关闭
openvpn-status-0.2.2.tar.gz 的散列值
算法 | 散列值 | |
---|---|---|
SHA256 | ed9de7b6bb4590b171eefe23f6900bb904c70f4eb0e2c53a3faaf9b87dc5ffeb |
|
MD5 | ce30acb97966765d5a6c83e8fef556fb |
|
BLAKE2b-256 | f7934f74dc81ca438c8ad16e5d0e9dd00a84f4cfe735372befa34e9eefced221 |
关闭
openvpn_status-0.2.2-py2.py3-none-any.whl 的散列值
算法 | 散列值 | |
---|---|---|
SHA256 | e094e816384a0fa4f6aa7e5717d85db632bcdc7fa08c37613caaf42146d7ac7b |
|
MD5 | a61507f6efcff2644388460573ea3a30 |
|
BLAKE2b-256 | a608fb96f5e5511c612b5395d33d587ce6eb8bf5ed9d948bf9761c2eb0ac3fe8 |