2012-04-08 4 views
2

私のvoip電話アダプタは、コールが入ったときにログエントリを生成します。ローカルのubuntuマシンのsyslog、/ var/log/linksys 。ログ。syslogファイルを監視してgrepします

今すぐインスタント発信者番号表示として使用したいと思います。重要な行には "INVITE sip"という文字列が含まれているので、私は試しました:

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

しかし、これは全行をもたらします。私は、「From:」という文字列とその後ろの最初の@記号の間に、発信者名と電話番号の部分だけに興味があります。

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

を(ログがあまりにも他の行を受け取る)サンプルラインである:どのような援助のための

Apr 8 01:06:10 INVITE sip: [email protected]:5060 SIP/2.0#015#012Via: SIP/2.0/UDP 111.111.11.111:5060;branch=z9hG4bK5f142476;rport#015#012From: "SMITHSON D" <sip:[email protected]>;tag=as410515ed#015#012To: <sip:[email protected]:5060>#015#012Contact: <sip:[email protected]>#015#012Call-ID: [email protected]#015#012CSeq: 102 INVITE#015#012User-Agent: VoIPMS/SERAST#015#012Max-Forwards: 70#015#012Remote-Party-ID: "SMITHSON D" <sip:[email protected]>;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 

ありがとう...

+0

それは 'filefilename'右-f尾ですか?がんばろう。 – shellter

答えて

2

awkをお試しください。

ここ

が(用途が一致する第三引数拡張をgawkは)私のgawkのワンライナーです:きれいに印刷して

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

同じスクリプト:グレップの

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

ジャストパイプ出力この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]}' 
+0

| grep | grep | grep dawkは機能しませんでした。しかし、それを修正しようとするのではなく、syslogを変更して、INVITE行だけがキャプチャされるようにしました。 gawkは私に必要な結果をくれました。今では、電話が鳴る前であっても、誰が私の画面に電話しているのかを見ています。ありがとう! – Henry

1

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

+0

inotifywaitは認識されておらず、多くの可能性を秘めているようです。確かに便利なようにそれについて学ぶでしょう。ありがとう!何らかの理由で – Henry

関連する問題