Поиск sip диалога с помощью awk

8 Авг
2012

Поиск sip диалога с помощью awk

Про еще один однострочник на awk можно посмотреть внутри

Довелось управлять voip-телефонией, и возникла проблема с одним из голосовых шлюзов. Для поиска неисправности включил журналирование sip-трафика на самом шлюзе в файл, для последующего его анализа, но так как файл этот оттуда переносить не хотелось — написал коротенький скрипт, который с помощью awk анализирует этот файл, и выводит только тот sip-диалог, который мне нужен. Формат файла журнала — все sip сообщения идут текстом подряд.
Сам скрипт

#!/bin/sh
echo in file $1 searching callid $2
awk "BEGIN { RS=\"\n\n\"; print \"\" } { if (/$2/) { print (\$0); }}" $1


Пример запуска

./getconfid.sh sip_transport__00_00_00.log 502221BCA33FE0000348B


Что выводит
in file sip_transport__00_00_00.log searching callid 502221BCA33FE0000348B

2012-08-08 12:22:20.674 SIP_Transport send packet to 192.168.1.114:5060
INVITE sip:108@192.168.1.114:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.9.6:5060;branch=z9hG4bK_a3Kr_1344414140X00003669
To: <sip:108@192.168.1.114:5060>
From: <sip:109@192.168.9.6:5060>;tag=134441414000004000
Contact: <sip:109@192.168.9.6:5060>
Call-ID: 502221BCA33FE0000348B_192.168.9.6
CSeq: 100 INVITE
Max-Forwards: 70
Content-Type: application/sdp
Content-Length: 244
Allow: INVITE,CANCEL,ACK,BYE,INFO,PRACK,UPDATE,NOTIFY,MESSAGE,REFER,OPTIONS
Supported: 100rel
Category: 0

v=0
o=protei 1344414140 1 IN IP4 192.168.9.6
s=protei
c=IN IP4 192.168.9.6
t=0 0
m=audio 47570 RTP/AVP 8 18 101
a=rtpmap:8 PCMA/8000
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=ptime:20

2012-08-08 12:22:20.687 SIP_Transport received packet from 192.168.1.114:5060
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 192.168.9.6:5060;branch=z9hG4bK_a3Kr_1344414140X00003669
From: <sip:109@192.168.9.6:5060>;tag=134441414000004000
To: <sip:108@192.168.1.114:5060>
Call-ID: 502221BCA33FE0000348B_192.168.9.6
CSeq: 100 INVITE
Contact: <sip:108@192.168.1.114:5060>
Server: hand-made softswitch
Content-Length: 0

2012-08-08 12:22:21.498 SIP_Transport received packet from 192.168.1.114:5060
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP 192.168.9.6:5060;branch=z9hG4bK_a3Kr_1344414140X00003669
From: <sip:109@192.168.9.6:5060>;tag=134441414000004000
To: <sip:108@192.168.1.114:5060>;tag=2019134764-3776000737-3043542691-2289286809
Call-ID: 502221BCA33FE0000348B_192.168.9.6
CSeq: 100 INVITE
Contact: <sip:108@192.168.1.114:5060>
Content-Type: application/sdp
Server: hand-made softswitch
Content-Length:   243

v=0
o=- 1344414141 1344414141 IN IP4 192.168.1.116
s=-
c=IN IP4 192.168.1.116
t=0 0
m=audio 13686 RTP/AVP 8 101
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=ptime:20
a=sendrecv
a=silenceSupp:off - - - -

2012-08-08 12:22:40.492 SIP_Transport send packet to 192.168.1.114:5060
CANCEL sip:108@192.168.1.114:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.9.6:5060;branch=z9hG4bK_a3Kr_1344414140X00003669
To: <sip:108@192.168.1.114:5060>;tag=2019134764-3776000737-3043542691-2289286809
From: <sip:109@192.168.9.6:5060>;tag=134441414000004000
Contact: <sip:109@192.168.9.6:5060>
Call-ID: 502221BCA33FE0000348B_192.168.9.6
CSeq: 100 CANCEL
Content-Length: 0
Reason: Q.850;cause=16

2012-08-08 12:22:40.507 SIP_Transport received packet from 192.168.1.114:5060
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.9.6:5060;branch=z9hG4bK_a3Kr_1344414140X00003669
From: <sip:109@192.168.9.6:5060>;tag=134441414000004000
To: <sip:108@192.168.1.114:5060>;tag=2019134764-3776000737-3043542691-2289286809
Call-ID: 502221BCA33FE0000348B_192.168.9.6
CSeq: 100 CANCEL
Contact: <sip:108@192.168.1.114:5060>
Server: hand-made softswitch
Content-Length: 0

2012-08-08 12:22:40.512 SIP_Transport received packet from 192.168.1.114:5060
SIP/2.0 603 Request Terminated
Via: SIP/2.0/UDP 192.168.9.6:5060;branch=z9hG4bK_a3Kr_1344414140X00003669
From: <sip:109@192.168.9.6:5060>;tag=134441414000004000
To: <sip:108@192.168.1.114:5060>;tag=2019134764-3776000737-3043542691-2289286809
Call-ID: 502221BCA33FE0000348B_192.168.9.6
CSeq: 100 INVITE
Contact: <sip:108@192.168.1.114:5060>
Server: hand-made softswitch
Reason: SIP;cause=487;text="Request Terminated"
Reason: Q.850;cause=16;text="Normal call clearing"
Content-Length: 0

2012-08-08 12:22:40.519 SIP_Transport send packet to 192.168.1.114:5060
ACK sip:108@192.168.1.114:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.9.6:5060;branch=z9hG4bK_a3Kr_1344414140X00003669
To: <sip:108@192.168.1.114:5060>;tag=2019134764-3776000737-3043542691-2289286809
From: <sip:109@192.168.9.6:5060>;tag=134441414000004000
Call-ID: 502221BCA33FE0000348B_192.168.9.6
CSeq: 100 ACK
Max-Forwards: 70
Content-Length: 0


Цель достигнута за скрипт из одной строки, который для удобства поклал в шелл-скрипт. По сути — он разбивает весь файл по разделителю (двойной перевод каретки), и выводит только те части, в которых нашел совпадение.
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх