我在路由器 (Fritz!Box) 后面设置了一个小型 Raspberry Pi(带有 Debian 8),它会检查/分析每个 SIP 呼叫的特定电话线路的连接性或更确切地说是服务质量。我的电话线另一端有电话答录机。基本上,我需要知道什么时候电话线无法接通。
具体来说,Raspberry 每天使用 Sipcmd 程序调用该号码 3 次(https://github.com/tmakkonen/sipcmd) - 请参阅下面的代码。
定时任务:
0 8,14,20 * * * /usr/bin/sipcmd -P sip -u abc -c cba -w 192.168.8.10 -x "c010101010101;ws45000;h"
现在调用工作正常,但我需要诸如登录到文本文件之类的东西,当电话无法接通或相当,当电话号码无法接通时,这样它就像一个警报系统一样,只向我显示失败的情况。
有人有解决这个问题的方法吗?
答案1
好吧,我找到了解决我问题的方法。 Sipcmd 程序具有以下功能:
-o --opallog enable extra opal library logging to file
所以,我将我的 cronjob 更改为:
0 8,14,20 * * * /usr/bin/sipcmd -o ~/call.log -P sip -u abc -c cba -w 192.168.8.10 -x "c010101010101;ws45000;h"
现在,利用现有的日志文件,我可以使用一个函数来 grep 查找 SIP 状态代码,该代码告诉我呼叫已接通(或未接通)。
如果有人感兴趣,这里是 SIP 状态代码:
https://de.wikipedia.org/wiki/SIP-Status-Codes
每个人都取得了很大的成功。