#!/usr/bin/perl # Perl script to listen for Tibco RVD Client Status messages and print in formatted display # help@infrasup.com-2006 # contact us for v 2.0 whcih includes Tibrvlisten parameters #hostaddr Hex address of host #network IP network #uptime rvd uptime #ver rvd version #ms Messages Sent #bs Bytes Sent #mr Messages Received #br Bytes Received #mtc Messages to Clients #btc Bytes to Clients #mfc Messages from Clients #bfc Bytes from Clients #md Messages Discarded #rp Retransmitted Packets #sp Sent Packets #mp Missed Packets #dp Destined Packets #mtn Messages to Neighbor #mfn Messages from Neighbor $|=1; $==1000; $service="7500"; $daemon="\"tcp:7500\""; #$network="\"172.20.193.255;226.1.1.20;226.1.1.10\""; #$network="\"192.168.49.14;226.1.1.10;226.1.1.20\""; $network="\"hme0\""; $subject="\"_RV.>\""; $s_time=time; open(RVLOG,"rvlisten -service $service -daemon $daemon -network $network $subject|"); while () { # print; next if !/_RV\.INFO\.SYSTEM\.HOST\.STATUS/; $_=~s/^.*ADV_NAME="HOST\.STATUS\.[0-9A-F]+" //g; $_=~s/\}$//g; # print "$_\n"; @stats=split(/\s/,$_); foreach (@stats) { @namevalue=split(/=/,$_); if ($namevalue[0] eq "hostaddr") { $hexname=$namevalue[1] if $namevalue[0] eq "hostaddr"; $hashname=hex(substr($hexname,0,2)).".".hex(substr($hexname,2,2)).".".hex(substr($hexname,4,2)).".".hex(substr($hexname,6,2)); $seen{$hashname}++; next; } $$hashname{$namevalue[0]}=$namevalue[1]; $n_time=time; } ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime($n_time); $$hashname{"timestamp"}=sprintf"%02d/%02d/%04d %02d:%02d:%02d",$mon+1,$mday,$year+1900,$hour,$min,$sec; next if $n_time - $l_time < 90 && $first_time == 1; next if $n_time - $s_time < 90 && $first_time == 0; $first_time=1; foreach $hashname (sort keys(%seen)){ write; } $-=0; $l_time=$n_time; %hashname=(); %seen=(); print "\n"; # foreach $stat (sort keys (%$hashname)) { # print "$hashname $stat $$hashname{$stat}\n"; # } } format top = Timestamp IP Address network br mr bs ms md bfc mfc btc mtc mfn mtn rp mp sp dp ver os up sn ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- . format STDOUT = @<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<< @>>>>>>>>>>>> @>>>>>>> @>>>>> @>>>>>>> @>>>> @>>>> @>>>>>>> @>>>>> @>>>>>>> @>>>> @>>>> @>>>> @>>> @>>> @>>>>> @>>>> @<<<<<< @>> @>>>>>> @>>>> $$hashname{"timestamp"},$hashname,$$hashname{"network"},$$hashname{"br"},$$hashname{"mr"},$$hashname{"bs"},$$hashname{"ms"},$$hashname{"ms"},$$hashname{"bfc"},$$hashname{"mfc"},$$hashname{"btc"},$$hashname{"mtc"},$$hashname{"mfn"},$$hashname{"mtn"},$$hashname{"rp"},$$hashname{"mp"},$$hashname{"sp"},$$hashname{"dp"},$$hashname{"ver"},$$hashname{"os"},$$hashname{"up"},$$hashname{"sn"} . # print"$hostaddr,$sn,$os,$ver,$up,$ms,$bs,$mr,$br,$mtc,$btc,$mfc,$bfc,$sp,$dp\n";