[rrd-users] ERROR: 'T' is not a valid function name - issue with spaces between double quotes?

Tobias Oetiker tobi at oetiker.ch
Mon Apr 2 15:45:21 CEST 2012


Hi Stephen,

Mar 20 stphnwallace wrote:

>
>
> Regards,
>
> Stephen J Wallace
> +61 (0)415 306731
>
> On 20/03/2012, at 6:51 PM, "stphnwallace [via RRD Mailinglists]"<ml-node+s937164n7388337h78 at n2.nabble.com> wrote:
>
> > Sorry about formatting!
> >
> > Strong cup of coffee required before proceeding
> >
> >  I have rrd setup as a service on a remote box using xinetd.
> >
> > I have been able to echo command to this piping thru netcat, and been able to do creates, updates, info, last, etc.
> >
> > My end goal is to use rrdgraph against a remote rrdrsv, and show the resulting graph in web interface thru PHP code.
> >
> > I think I've uncovered a related bug whereby one cannot use spaces between double quotes.
> >  Examples as follow;
> >
> > This works;
> > [root at nagios httpd]# echo `cat /tmp/rrdgraph` | nc 192.168.122.32 13900
> > [root at nagios httpd]# cat /tmp/rrdgraph graph sjw.png DEF:var1=localhost/_HOST_.rrd:1:AVERAGE "CDEF:sp1=var1,100,/,12,*" "CDEF:sp2=var1,100,/,30,*" "CDEF:sp3=var1,100,/,50,*" "CDEF:sp4=var1,100,/,70,*" AREA:var1#FF5C00:"Round Trip Times " AREA:sp4#FF7C00: AREA:sp3#FF9C00: AREA:sp2#FFBC00: AREA:sp1#FFDC00: GPRINT:var1:LAST:"%6.2lf ms last " GPRINT:var1:MAX:"%6.2lf ms max " GPRINT:var1:AVERAGE:"%6.2lf ms avg \n" LINE1:var1#000000:""
> >
> > This does not work directly from command line, although it's exactly the same code from /tmp/rrdgraph;
> > [root at nagios httpd]# echo "graph sjw.png DEF:var1=localhost/_HOST_.rrd:1:AVERAGE "CDEF:sp1=var1,100,/,12,*" "CDEF:sp2=var1,100,/,30,*" "CDEF:sp3=var1,100,/,50,*" "CDEF:sp4=var1,100,/,70,*" AREA:var1#FF5C00:"Round Trip Times " AREA:sp4#FF7C00: AREA:sp3#FF9C00: AREA:sp2#FFBC00: AREA:sp1#FFDC00: GPRINT:var1:LAST:"%6.2lf ms last " GPRINT:var1:MAX:"%6.2lf ms max " GPRINT:var1:AVERAGE:"%6.2lf ms avg \n" LINE1:var1#000000:""" | nc 192.168.122.32 13900

I guess in the first test the shell is acting differently on the
string as in the second version ... quoting can be tricky ... you
can run

$ rrdtool -

and then enter the commands directly then the shell will not
interfear ....

or you could do

$ cat xxx | rrdtool $

cheers
tobi


> > ***snip****
> >
> > ERROR: 'T' is not a valid function name
> >
> >  I've made the T in the command BOLD above to make it stand out. It's the first letter of "Trip"
> >
> > Now, when I remove the spaces from between the double quotes, it works;
> >
> >  [root at nagios httpd]# echo "graph sjw.png DEF:var1=localhost/_HOST_.rrd:1:AVERAGE "CDEF:sp1=var1,100,/,12,*" "CDEF:sp2=var1,100,/,30,*" "CDEF:sp3=var1,100,/,50,*" "CDEF:sp4=var1,100,/,70,*" AREA:var1#FF5C00:"Round_Trip_Times " AREA:sp4#FF7C00: AREA:sp3#FF9C00: AREA:sp2#FFBC00: AREA:sp1#FFDC00: GPRINT:var1:LAST:"%6.2lf " GPRINT:var1:MAX:"%6.2lf " GPRINT:var1:AVERAGE:"%6.2lf" LINE1:var1#000000:""" | nc 192.168.122.32 13900
> >
> > ....so, maybe I've found a bug here???
> >
> > So, when I use the command line above, sjw.png gets created on the remote server. If I change the sjw.png for a -, I see PNG style splat on the screen as I would hope for. Now to sew this into a PHP script;
> >
> > ********
> > <? P H P
> >
> > //set the document header so that this renders as an image
> > header("Content-type: image/png");
> >
> > //this is the shell command that you want to execute
> > // $cmdString = 'echo `cat /tmp/rrdgraph` | /usr/bin/nc 192.168.122.32 13900';
> > //$cmdString = '`cat /tmp/rrdgraph` | /usr/bin/nc 192.168.122.32 13900';     <******** If I store the rrd "graph" commands in a file, I get a 0 back, but no PNG is created, nor any errors.
> > $cmdString = ' echo "graph - DEF:var1=localhost/_HOST_.rrd:1:AVERAGE "CDEF:sp1=var1,100,/,12,*" "CDEF:sp2=var1,100,/,30,*" "CDEF:sp3=var1,100,/,50,*" "CDEF:sp4=var1,100,/,70,*" AREA:var1#FF5C00:"Round_Trip_Times " AREA:sp4#FF7C00: AREA:sp3#FF9C00: AREA:sp2#FFBC00: AREA:sp1#FFDC00: GPRINT:var1:LAST:"%6.2lf " GPRINT:var1:MAX:"%6.2lf " GPRINT:var1:AVERAGE:"%6.2lf" LINE1:var1#000000:""" | nc 192.168.122.32 13900 ';        <*******This one is closest to working I think
> >
> > // $cmdString = 'echo "graph - DEF:var1=localhost/_HOST_.rrd:1:AVERAGE CDEF:sp1=var1,100,/,12,* CDEF:sp2=var1,100,/,30,* CDEF:sp3=var1,100,/,50,* CDEF:sp4=var1,100,/,70,* AREA:var1#FF5C00:"Round Trip Times " AREA:sp4#FF7C00: AREA:sp3#FF9C00: AREA:sp2#FFBC00: AREA:sp1#FFDC00: GPRINT:var1:LAST:"%6.2lf ms last " GPRINT:var1:MAX:"%6.2lf ms max " GPRINT:var1:AVERAGE:"%6.2lf ms avg \n" LINE1:var1#000000:"""|/usr/bin/nc 192.168.122.32 13900';
> >
> > //if I can see a hard-coded test that works, I can add the support that would be needed on our end
> >
> > //execute command and direct output to browser
> > passthru($cmdString,$bool);
> >
> > $debugstring = "CMD: $cmdString RETURNCODE: $bool \n";
> >
> > //lets create a simple log for debugging, keep a running tail on this.
> > file_put_contents('/tmp/debugger.log',$debugstring,FILE_APPEND);
> > //file_put_contents('/tmp/debugger.log',$debugstring,'a');      <***** changed the "a" to FILE_APPEND :)
> >
> > ?>
> > ********
> >  ...when I check my PHP debug log, I see a zero, meaning everything is "good"....but I see no graph displayed in my browser, nor any /var/log/httpd/error_log message.
> >
> > CMD: echo "graph - DEF:var1=localhost/_HOST_.rrd:1:AVERAGE "CDEF:sp1=var1,100,/,12,*" "CDEF:sp2=var1,100,/,30,*" "CDEF:sp3=var1,100,/,50,*" "CDEF:sp4=var1,100,/,70,*" AREA:var1#FF5C00:"Round_Trip_Times " AREA:sp4#FF7C00: AREA:sp3#FF9C00: AREA:sp2#FFBC00: AREA:sp1#FFDC00: GPRINT:var1:LAST:"%6.2lf " GPRINT:var1:MAX:"%6.2lf " GPRINT:var1:AVERAGE:"%6.2lf" LINE1:var1#000000:""" | nc 192.168.122.32 13900 RETURNCODE: 0
> >
> > Perplexing. Anybody had any luck with getting around my "bug, and/or remote PHP graph display????
> >
> > Regs, Stephen
> >
> > If you reply to this email, your message will be added to the discussion below:
> > http://rrd-mailinglists.937164.n2.nabble.com/ERROR-T-is-not-a-valid-function-name-issue-with-spaces-between-double-quotes-tp7388328p7388337.html
> > To unsubscribe from ERROR: 'T' is not a valid function name - issue with spaces between double quotes?, click here.
> > NAML
>
>
> --
> View this message in context: http://rrd-mailinglists.937164.n2.nabble.com/ERROR-T-is-not-a-valid-function-name-issue-with-spaces-between-double-quotes-tp7388328p7388358.html
> Sent from the RRDtool Users Mailinglist mailing list archive at Nabble.com.
>
> _______________________________________________
> rrd-users mailing list
> rrd-users at lists.oetiker.ch
> https://lists.oetiker.ch/cgi-bin/listinfo/rrd-users
>
>

-- 
Tobi Oetiker, OETIKER+PARTNER AG, Aarweg 15 CH-4600 Olten, Switzerland
http://it.oetiker.ch tobi at oetiker.ch ++41 62 775 9902 / sb: -9900



More information about the rrd-users mailing list