跳至主要内容

使用Python解析OpenVPN状态日志

项目描述

openvpn-status 是一个Python库。它解析OpenVPN状态日志并将其转换为Python数据结构。

它与Python 2.73.63.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 (7.5 kB 查看散列值)

上传时间 源代码

构建分发

openvpn_status-0.2.2-py2.py3-none-any.whl (8.4 kB 查看散列值)

上传时间 Python 2 Python 3

支持