SIP消息计数器
sipcounter的Python项目详细描述
吸管计数器
该模块实现了一个简单的、无状态的SIP消息计数器,其中包括可选的消息流方向、IP地址、协议和端口跟踪。当除了SIP消息体之外还提供了通信主机的IP地址/协议/端口时,它分别计算每个通信链路的SIP请求和响应。因此,链路由SIP-UA服务器和客户端IP地址、服务器和客户端端口以及传输协议类型(TLS、TCP、UDP)组成,如果没有提供,也可以从SIP消息体推断出来。它的“数据”字典将链接作为键保存,每个链接的字典作为值保存另一层字典,每个方向有一个字典,计数器作为值,跟踪该方向发送或接收的SIP消息类型的数量。 为了快速可视化,它提供了一个“tostring”方便方法和许多其他类似方法,这些方法与collections模块中的Counter类类似。在
示例
要统计INVITE和ReINVITE消息的数量以及在INVITE对话框中收到的任何错误响应(4xx、5xx、6xx):
>>> from sipcounter import SIPCounter
>>> reader = sip_msg_reader()
>>> c = SIPCounter(name='SBC Cone-A', sip_filter=set(['INVITE', '4', '5', '6']))
>>> while True:
... try:
... # the 'reader' is SIP log parser generator
... timestamp, sipmsg, msgdir, srcip, srcport, dstip, dstport = next(reader)
... c.add(sipmsg, msgdir, srcip, srcport, dstip, dstport)
... except:
... print(c.tostring(title='2020-0101 01:01:00'))
... break
KeyboardInterrupt
2020-0101 01:01:00 INVITE ReINVITE 503 600 TOTAL
SBC Cone-A ---> <--- ---> <--- ---> <--- ---> <---
1.1.1.1-TCP-5060-2.2.2.1 13 10 40 40 0 0 0 0 103
1.1.1.1-TLS-5061-2.2.2.1 13 10 36 42 1 0 1 0 103
SUMMARY 26 20 76 82 1 0 1 0 206
要求
- Python 2.7-3.x版
许可证
麻省理工学院,见:许可证.txt在
作者
Szabolcs Szokolysszokoly@pm.me
- 项目
标签: