2

通話が着信すると、私の voip 電話アダプターはログ エントリを生成します。これを、ローカルの ubuntu マシンの syslog、/var/log/linksys.log というファイルに転送することができました。

今、私はインスタント発信者ID表示としてそれを使用したいと思います. 重要な行には「INVITE sip」という文字列が含まれているため、次のことを試しました。

tail /var/log/linksys.log -f | grep "INVITE sip"

しかし、これは行全体をもたらします。私が関心があるのは、文字列「From:」とその後の最初の @ 記号の間の発信者名と電話番号の部分だけです。

私の目標は、ファイルを tail -f または同様の方法で追跡できるようにすることです (マルチテールも試しました) が、新しい関連行がログに追加されたときに名前と電話番号のみを表示するようにします。(ログは他の行も受け取ります)

サンプル行は次のとおりです。

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

ご協力ありがとうございました...

4

2 に答える 2

2

を使ってみてくださいawk

これが私のgawkワンライナーです(一致するためにgawkの3番目の引数拡張を使用します):

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

きれいな印刷を使用した同じスクリプト:

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

grep の出力をこの gawk スクリプトにパイプするだけです。

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]}'
于 2012-04-08T05:53:37.933 に答える
1

これが Gnu/Linux 上にある場合は、inotifywait を使用してファイルへの変更を監視し、関心のある行の部分を抽出して必要な処理を実行するスクリプトをトリガーできます。

于 2012-04-08T05:40:26.740 に答える