Dear xymon users,
I got stuck while trying to monitor a file which should be updated regularly and which has got a timestamp in its name. "files" on the server remains clear, no data . Could someone tell me what is wrong with these settings or what have i forgotten?
On the server we have in
analysis.cfg
HOST=myserver
FILE /home/mypath/log/update_out_$(date +%Y%m%d).txt MTIME<600 red
in client-local.cfg:
[myserver]
file:find /mypath/log/update_out_$(date +%Y%m%d).txt
I see an entry for this file on the client
in tmp logfetch.myserver.cfg
file:find /mypath/log/update_out_$(date +%Y%m%d).txt
but there is nothing for this file in msg.myserver.txt
File exists and is readable: find /home/mypath/log/update_out_$(date +%Y%m%d).txt -exec ls -l {} \; -rw-rw-r-- 1 ... 2467070 Sep 26 08:43 /home/mypath/log/update_out_20130926.txt
In xymonclient.log I see an entry
sh: syntax error at line 1: (' unexpected but I don't know if it is related to the file problem or to anything else. I know that sh can't deal with $(xy), I tried as well FILE /home/mypath/log/update_out_date +%Y%m%d`.txt MTIME<600 red
but in vain.
Any help appreciated, kind regards Rolf
-- Mit freundlichen Gruessen Rolf Schrittenlocher
Lokales Bibliothekssystem Frankfurt Senckenberganlage 31, 60054 Frankfurt Tel: (49) 69 - 798 28908 Fax: (49) 69 798 28817 LBS: lbs-f at mlist.uni-frankfurt.de Persoenlich: schritte at ub.uni-frankfurt.de
Looks like your analysis.cfg entry is wrong.Try this.
FILE /home/mypath/log/update_out_[0-9]*-[0-9]*-[0-9]*\.txt MTIME<600 red
On Thu, Sep 26, 2013 at 1:04 PM, Rolf Schrittenlocher < schritte at ub.uni-frankfurt.de> wrote:
Dear xymon users,
I got stuck while trying to monitor a file which should be updated regularly and which has got a timestamp in its name. "files" on the server remains clear, no data . Could someone tell me what is wrong with these settings or what have i forgotten?
On the server we have in analysis.cfg HOST=myserver FILE
/home/mypath/log/update_out_$**(date +%Y%m%d).txtMTIME<600 redin client-local.cfg: [myserver] file:
find /mypath/log/update_out_$(date +%Y%m%d).txtI see an entry for this file on the client in tmp logfetch.myserver.cfg file:
find /mypath/log/update_out_$(date +%Y%m%d).txtbut there is nothing for this file in msg.myserver.txt
File exists and is readable: find /home/mypath/log/update_out_$(**date +%Y%m%d).txt -exec ls -l {} \; -rw-rw-r-- 1 ... 2467070 Sep 26 08:43 /home/mypath/log/update_out_ **20130926.txt
In xymonclient.log I see an entry sh: syntax error at line 1:
(' unexpected but I don't know if it is related to the file problem or to anything else. I know that sh can't deal with $(xy), I tried as well FILE /home/mypath/log/update_out_**date +%Y%m%d`.txt MTIME<600 red but in vain.Any help appreciated, kind regards Rolf
-- Mit freundlichen Gruessen Rolf Schrittenlocher
Lokales Bibliothekssystem Frankfurt Senckenberganlage 31, 60054 Frankfurt Tel: (49) 69 - 798 28908 Fax: (49) 69 798 28817 LBS: lbs-f at mlist.uni-frankfurt.de Persoenlich: schritte at ub.uni-frankfurt.de
______________________________**_________________ Xymon mailing list Xymon at xymon.com http://lists.xymon.com/**mailman/listinfo/xymon<http://lists.xymon.com/mailman/listinfo/xymon>
Thanks Deepak,
unfortunately that won't help as I need the file with the present date
in its name. I did now:
ls -tr /home/mypath/log/update_out_*.txt|tail -1
This workaround helped. But I'm still curious if there is a solution for
first expanding the date and second the whole expression
find /home/mypath/log/update_out_$(date +%Y%m%d).txt (sorry, I
dropped the find in my first posting)
kind regards Rolf
Looks like your analysis.cfg entry is wrong.Try this.
FILE /home/mypath/log/update_out_[0-9]*-[0-9]*-[0-9]*\.txt MTIME<600 red
On Thu, Sep 26, 2013 at 1:04 PM, Rolf Schrittenlocher <schritte at ub.uni-frankfurt.de <mailto:schritte at ub.uni-frankfurt.de>> wrote:
Dear xymon users,
I got stuck while trying to monitor a file which should be updated
regularly and which has got a timestamp in its name.
"files" on the server remains clear, no data . Could someone tell me
what is wrong with these settings or what have i forgotten?
On the server we have in
analysis.cfg
HOST=myserver
FILE `/home/mypath/log/update_out_$(date +%Y%m%d).txt`
MTIME<600 red
in client-local.cfg:
[myserver]
file:`find /mypath/log/update_out_$(date +%Y%m%d).txt`
I see an entry for this file on the client
in tmp logfetch.myserver.cfg
file:`find /mypath/log/update_out_$(date +%Y%m%d).txt`
but there is nothing for this file in msg.myserver.txt
File exists and is readable:
find /home/mypath/log/update_out_$(date +%Y%m%d).txt -exec ls -l
{} \;
-rw-rw-r-- 1 ... 2467070 Sep 26 08:43
/home/mypath/log/update_out_20130926.txt
In xymonclient.log I see an entry
sh: syntax error at line 1: `(' unexpected
but I don't know if it is related to the file problem or to anything
else.
I know that sh can't deal with $(xy), I tried as well
FILE /home/mypath/log/update_out_`date +%Y%m%d`.txt MTIME<600 red
but in vain.
Any help appreciated,
kind regards
Rolf
--
Mit freundlichen Gruessen
Rolf Schrittenlocher
Lokales Bibliothekssystem Frankfurt
Senckenberganlage 31, 60054 Frankfurt
Tel: (49) 69 - 798 28908 Fax: (49) 69 798 28817
LBS: lbs-f at mlist.uni-frankfurt.de <mailto:lbs-f at mlist.uni-frankfurt.de>
Persoenlich: schritte at ub.uni-frankfurt.de
<mailto:schritte at ub.uni-frankfurt.de>
_______________________________________________
Xymon mailing list
Xymon at xymon.com <mailto:Xymon at xymon.com>
http://lists.xymon.com/mailman/listinfo/xymon
-- Mit freundlichen Gruessen Rolf Schrittenlocher
Lokales Bibliothekssystem Frankfurt Senckenberganlage 31, 60054 Frankfurt Tel: (49) 69 - 798 28908 Fax: (49) 69 798 28817 LBS: lbs-f at mlist.uni-frankfurt.de Persoenlich: schritte at ub.uni-frankfurt.de
On 26 September 2013 17:34, Rolf Schrittenlocher < schritte at ub.uni-frankfurt.de> wrote:
On the server we have in analysis.cfg HOST=myserver FILE
/home/mypath/log/update_out_$**(date +%Y%m%d).txtMTIME<600 red
You cannot use backticks in analysis.cfg FILE patterns. You have to use a pattern match or a regular expression. So one of these might work for you:
FILE "/home/mypath/log/update_out_*.txt" MTIME<600 red
or
FILE "%/home/mypath/log/update_out_[0-9]*\.txt" MTIME<600 red
These should match whatever file is evaluated by the backtick expression in analysis.cfg. That will only ever be one file, so you should only see alarms for the correct file.
in client-local.cfg:
[myserver] file:
find /mypath/log/update_out_$(date +%Y%m%d).txt
If your Xymon user's shell is bourne shell, then the $() form won't work. Bourne shell uses only backticks, but you cannot use backticks either, because Xymon terminates the "file:" expression at the second backtick.
You can probably just run bash, if it's installed, and give it the command you want, using the $() expression, like so:
file:bash -c 'find /mypath/log/update_out_$(date +%Y%m%d).txt'
In xymonclient.log I see an entry sh: syntax error at line 1: `(' unexpected but I don't know if it is related to the file problem or to anything else.
Yes, this is bourne shell complaining about "(" following "$" because it requires an opening paren to be at the start of an expression. It doesn't understand "$(). So try the "bash" thing and see if it works for you. If bash isn't installed, then the same should work for korn shell (ksh).
J
Hi,
thanks a lot to all and especially to you, Jeremy. The central info was "You cannot use backticks in analysis.cfg FILE patterns". I still have no idea what the bourne shell is doing on the client. Xymon user uses bash, maybe the error is the result of some other script using sh and not related to the file problem. But at least it is working know and I know how to set entries in analysis.cfg and client-local.cfg
Rolf
This is what I use now
analysis.cfg: FILE /home/mypath/log/update_out_$(date +%Y%m%d).txt
MTIME<600 red
client config.cfg: file:bash -c 'find /mypath/log/update_out_$(date +%Y%m%d).txt'
On 26 September 2013 17:34, Rolf Schrittenlocher <schritte at ub.uni-frankfurt.de <mailto:schritte at ub.uni-frankfurt.de>> wrote:
On the server we have in analysis.cfg HOST=myserver FILE `/home/mypath/log/update_out_$(date +%Y%m%d).txt` MTIME<600 redYou cannot use backticks in analysis.cfg FILE patterns. You have to use a pattern match or a regular expression. So one of these might work for you:
Live in San Francisco
or
FILE "%/home/mypath/log/update_out_[0-9]*\.txt" MTIME<600 red
These should match whatever file is evaluated by the backtick expression in analysis.cfg. That will only ever be one file, so you should only see alarms for the correct file.
in client-local.cfg: [myserver] file:`find /mypath/log/update_out_$(date +%Y%m%d).txt`If your Xymon user's shell is bourne shell, then the $() form won't work. Bourne shell uses only backticks, but you cannot use backticks either, because Xymon terminates the "file:" expression at the second backtick.
You can probably just run bash, if it's installed, and give it the command you want, using the $() expression, like so:
file:
bash -c 'find /mypath/log/update_out_$(date +%Y%m%d).txt'In xymonclient.log I see an entry sh: syntax error at line 1: `(' unexpected but I don't know if it is related to the file problem or to anything else.Yes, this is bourne shell complaining about "(" following "$" because it requires an opening paren to be at the start of an expression. It doesn't understand "$(). So try the "bash" thing and see if it works for you. If bash isn't installed, then the same should work for korn shell (ksh).
J
-- Mit freundlichen Gruessen Rolf Schrittenlocher
Lokales Bibliothekssystem Frankfurt Senckenberganlage 31, 60054 Frankfurt Tel: (49) 69 - 798 28908 Fax: (49) 69 798 28817 LBS: lbs-f at mlist.uni-frankfurt.de Persoenlich: schritte at ub.uni-frankfurt.de
On 27 September 2013 17:27, Rolf Schrittenlocher < schritte at ub.uni-frankfurt.de> wrote:
I still have no idea what the bourne shell is doing on the client. Xymon user uses bash, maybe the error is the result of some other script using sh and not related to the file problem.
I think I worked it out. The first line in "xymonclient.sh" is "#!/bin/sh". So doesn't matter what the xymon user's shell is, the script runs under bourne shell. Under Linux, /bin/sh is actually a symlink to bash so the $() works. But on other systems where /bin/sh is actually a real bourne shell, you gotta do the bash work-around.
J
participants (3)
-
deepakdeore2004@gmail.com
-
jlaidman@rebel-it.com.au
-
schritte@ub.uni-frankfurt.de