[hobbit] Summary/Total data from several hosts

Ralph Mitchell ralphmitchell at gmail.com
Wed Oct 3 19:00:42 CEST 2007


On 10/3/07, Darren.Cotton at ses-astra.com <Darren.Cotton at ses-astra.com> wrote:
> Thanks Henrik,
>
> I just having one small problem now - I can't send the data I get to
> hobbit....
>
> Output of the bb query is:
> status server1.pusers green Wed Oct  3 12:40:00 UTC 2007\nConnected_Users :
> 175\n
>
> DSLGWS="^server[12345]\$"
> RESULT=0
> bb 212.56.225.37 "hobbitdboard host=${DSLGWS} test=pusers fields=msg" | \
> while read L
> do
>                 NBUSERS=`echo "$L" | sed 's/.* //g' | sed 's/n//g'`
>                 RESULT=`expr $RESULT + $NBUSERS`
> echo $RESULT
> done
>
> echo $RESULT
>
> $BB $BBDISP "status Total-Users.pusers green `date`
> Connected_Users : $RESULT
> "
>
> The first echo gives me the Total after each while/do ie.
> 186
> 370
> 527
> 677
> 839
>
> but the second echo gives me 0. I've tried using export RESULT but can't
> seem to be able to get the RESULT outside of the while/do statement.

I've had the same problem occasionally.  I don't know what the
"proper" solution is, but this works for me:


    RES=`bb 212.56.225.37 "hobbitdboard host=${DSLGWS} test=pusers
fields=msg" | \
      while read L
      do
         NBUSERS=\`echo "$L" | sed 's/.* //g' | sed 's/n//g'\`
         RESULT=\`expr $RESULT + $NBUSERS\`
         echo $RESULT
      done`
    echo $RES

I.e., enclose the whole while loop in backticks, and also escape all
backticks within the outer set.  *Anything* echoed inside the outer
set of backticks becomes part of the value of $RES, which makes
debugging tricky.

T'ain't pretty, but it works and it's all in shell...

Ralph Mitchell



More information about the Xymon mailing list