在python中解析openvpn状态日志

openvpn-status的Python项目详细描述


openvpn status是一个python库。它解析openvpn状态日志并 它为您导入python数据结构。

它与cpython2.73.43.53.63.7和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

现在我们可以用这个库解析日志文件:

fromopenvpn_statusimportparse_statuswithopen('/var/run/openvpn-status.log')aslogfile: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.comprint(foo_client.bytes_received)# 334.9 kBprint(foo_client.bytes_sent)# 2.0 MBprint(int(foo_client.bytes_sent))# 2097152

更多细节见API reference

贡献

如果您想报告错误或请求功能,请随时打开 关于GitHub的问题。

当然,拉请求总是受欢迎的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用split函数分割字符串,但没有得到期望的结果   未找到包含derby数据库嵌入架构的sql Java桌面应用程序错误   java elasticsearch vs solr用于定制全文搜索系统   java Android:创建没有startOffset的动画延迟?   java如何查看其他应用程序接收的数据?   java如何在Linux中使用D和classpath选项运行jar文件   java和域设计最佳实践   具有相同内存位置的java数组,将显示为输出   连接到java中的elasticsearch?   Java Playframework重定向到带有Json负载的外部url   java无法在Android平台上使用InputStream为蓝牙socket创建ObjectInputStream   使用POI将Excel日期转换为Java日期,年份未正确显示   oracle从数据库层还是Java层调用webservice?