Shell 监视(跟踪)并grep系统日志文件

Shell 监视(跟踪)并grep系统日志文件,shell,grep,voip,tail,syslog,Shell,Grep,Voip,Tail,Syslog,我的voip电话适配器在来电时生成一个日志条目。我设法将它转发到本地ubuntu机器的syslog,一个名为/var/log/linksys.log的文件 现在我想用它作为即时来电显示。重要的一行包括字符串“INVITE sip”,因此我尝试: tail /var/log/linksys.log -f | grep "INVITE sip" 但这带来了整个系列。我只对在字符串“From:”和后面的第一个@符号之间有呼叫者姓名和电话的部分感兴趣 我的目标是能够使用tail-f或类似的文件(也尝试

我的voip电话适配器在来电时生成一个日志条目。我设法将它转发到本地ubuntu机器的syslog,一个名为/var/log/linksys.log的文件

现在我想用它作为即时来电显示。重要的一行包括字符串“INVITE sip”,因此我尝试:

tail /var/log/linksys.log -f | grep "INVITE sip"
但这带来了整个系列。我只对在字符串“From:”和后面的第一个@符号之间有呼叫者姓名和电话的部分感兴趣

我的目标是能够使用tail-f或类似的文件(也尝试了multitail),但只有在日志中添加新的相关行时,才能让它显示名称和电话号码。(日志也接收其他行)

下面是一个示例行:

Apr  8 01:06:10 INVITE sip: 999999@192.168.0.102:5060 SIP/2.0#015#012Via: SIP/2.0/UDP 111.111.11.111:5060;branch=z9hG4bK5f142476;rport#015#012From: "SMITHSON D" <sip:8885551234@111.111.11.111>;tag=as410515ed#015#012To: <sip:999999@192.168.0.102:5060>#015#012Contact: <sip:8885551234@111.111.11.111>#015#012Call-ID: 50354db42555555555aab68633cbb2e4@111.111.11.111#015#012CSeq: 102 INVITE#015#012User-Agent: VoIPMS/SERAST#015#012Max-Forwards: 70#015#012Remote-Party-ID: "SMITHSON D" <sip:8885551234@111.111.11.111>;privacy=off;screen=no#015#012Date: Sun, 08 Apr 2012 05:06:10 GMT#015#012Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO#015#012Supported: replaces#015#012Content-Type: application/sdp#015#012Content-Length: 291#015#012#015#012v=0#015#012o=root 18702 18702 IN IP4 111.111.11.111#015#012s=session#015#012c=IN IP4 111.111.11.111#015#012t=0 0#015#012m=audio 33100 RTP/AVP 0 18 101#015#012a=rtpmap:0 PCMU/8000#015#012a=rtpmap:18 G729/8000#015#012a=fmtp:18 annexb=no#015#012a=rtpmap:101 telephone-event/8000#015#012a=fmtp:101 0-16#015#012a=silenceSupp:off - - - -#015#012a=ptime:20#015#012a=sendrecv#015
Apr 8 01:06:10邀请sip:999999@192.168.0.102:5060 SIP/2.0#015#012Via:SIP/2.0/UDP 111.111.11.111:5060;分支=z9hG4bK5f142476;rport#015#012摘自《史密森D》;tag=as410515ed#015#012收件人:#015#012联系人:#015#012呼叫ID:50354db42555555555aab68633cbb2e4@111.111.11.111#015#012CSeq:102邀请#015#012用户代理:VoIPMS/SERAST#015#012Max转发:70#015#012远程方ID:“SMITHSON D”;隐私=关闭;screen=no#015#012日期:Sun,2012年4月8日05:06:10 GMT#015#012允许:邀请、确认、取消、选项、再见、参考、订阅、通知、,周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五支持:替换:周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五支持:替换替换:周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五替换0 0 0=0 0 0 0 0 035周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五0#015#012m=audio 33100 RTP/AVP 0 18 101#015#012a=rtpmap:0 PCMU/8000#015#012a=rtpmap:18 G729/8000#015#012a=fmtp:18附录B=no#015#012a=rtpmap:101电话事件/8000#015#012a=fmtp:101 0-16#015#012a=静音支持:关闭--#015#012a=ptime:20#015#012a=sendrecv#

非常感谢您的帮助……

如果这是在Gnu/Linux上,您可以使用inotifywait监视对文件的更改,然后触发一个脚本,提取您感兴趣的部分行并执行您需要的操作

尝试使用
awk

以下是我的gawk一行程序(使用gawk第三个参数扩展名进行匹配):

打印更漂亮的相同脚本:

gawk -v FS=';' -v OFS='/' '{match($3, /From: "(.*)" <(.*)@/, m); print m[1], m[2]}'

gawk-vfs=';'-v OFS='/'{匹配($3,/来自:“(.*)”这是
tail-f filefilefilename
对吧?祝你好运。出于某种原因,tail | grep | dawk不起作用。但我没有试图解决这个问题,而是修改了系统日志,只捕获了邀请行,因此tail | gawk给了我所需的结果。现在我甚至在电话开始响之前就看到了谁在我的屏幕上打电话。谢谢!我不知道inotifywa它,而且它似乎有很多潜力。我们将了解它,因为它一定会派上用场。谢谢!
gawk -v FS=';' -v OFS='/' '{match($3, /From: "(.*)" <(.*)@/, m); print m[1], m[2]}'
gawk -v FS=';' -v OFS='/' '{match($3, /From: "(.*)" <(.*)@/, m); print m[1], m[2]}' | gawk -v FS=';' -v OFS='/' '{match($3, /From: "(.*)" <(.*)@/, m); print m[1], m[2]}'