[Xymon] Strange issue when using local scripts (in linux)

Jeremy Laidman jeremy at laidman.org
Tue Aug 4 05:25:07 CEST 2020


David

I think the problem is that xymonclient.sh sets LC_ALL=C, which essentially
overrides the value of LANG. For example:

$ *LANG=en_US.UTF-8 rpm -q dhcp-common --qf "%{INSTALLTIME:date}\n"*
Tue 21 Apr 2020 01:14:57 PM AEST

$ *LANG=en_US.UTF-8 LC_ALL=C rpm -q dhcp-common --qf
"%{INSTALLTIME:date}\n"*
Tue Apr 21 13:14:57 2020

$ *LC_ALL=en_US.UTF-8 LANG=C rpm -q dhcp-common --qf
"%{INSTALLTIME:date}\n"*
Tue 21 Apr 2020 01:14:57 PM AEST

So, your script should only need to set LC_ALL=en_US.UTF-8, and it should
work.

But it seems like the world is trying to conspire against you changing
LANG/LC_ALL/LC_MESSAGES to anything but C, and I'd be inclined to go with
the flow, and assume that format; but also, set LC_ALL to C just in case.

J


On Tue, 4 Aug 2020 at 12:44, David Boyer <davieb at gmail.com> wrote:

> Jeremy,
>             So I thought about changing the output..  I compressed the
> spaces and then I put a _ in lieu of the spaces.
>
> As you can see below, they both get mangled...
>
> [davieb at xymonsvr ~]$ ~xymon/client/local/dateinfo
> dhcp-common,4.3.6,18_Jul_2020,en_US.UTF-8
> [davieb at xymonsvr ~]$ ~xymon/server/bin/xymon localhost "clientlog
> xymonsvr section=local:dateinfo"
> [local:dateinfo]
> dhcp-common,4.3.6,Jul_18_17:44:26,en_US.UTF-8
>
> [davieb at xymonsvr ~]$ ~xymon/client/local/dateinfo
> dhcp-common,4.3.6,18Jul2020,en_US.UTF-8
> [davieb at xymonsvr ~]$ ~xymon/server/bin/xymon localhost "clientlog
> xymonsvr section=local:dateinfo"
> [local:dateinfo]
> dhcp-common,4.3.6,Jul1817:44:26,en_US.UTF-8
>
>
>
> On Mon, Aug 3, 2020 at 10:25 PM David Boyer <davieb at gmail.com> wrote:
>
>> Jeremy,
>>            You read my mind!  But, it didn't seem to help... :(
>>
>> [davieb at xymonsvr ~]$ ~xymon/client/local/dateinfo
>> dhcp-common,4.3.6,18 Jul 2020,en_US.UTF-8
>>
>> [davieb at xymonsvr ~]$ ~xymon/server/bin/xymon localhost "clientlog
>> xymonsvr section=local:dateinfo"
>> [local:dateinfo]
>> dhcp-common,4.3.6,Jul 18 17:44:26,en_US.UTF-8
>>
>> [davieb at xymonsvr ~]$ cat ~xymon/client/local/dateinfo
>> #!/bin/sh
>>
>> OS=`uname -s`
>> RPM=dhcp-common
>> LANG=en_US.UTF-8;export LANG
>>
>> if [ ${OS} = "Linux" ]; then
>>    VERSION=`rpm -q ${RPM} --qf "%{VERSION}\n"`
>>    INSTALLED=`rpm -q ${RPM} --qf "%{INSTALLTIME:date}\n"|awk {'print $2"
>> "$3" "$4'}`
>> fi
>>
>> echo "${RPM},${VERSION},${INSTALLED},${LANG}"
>>
>> Good thing I'm grey already... This is the kinda stuff that would turn me
>> grey!
>>
>> Dave
>>
>>
>> On Mon, Aug 3, 2020 at 9:21 PM Jeremy Laidman <jeremy at laidman.org> wrote:
>>
>>> Great to see that the problem has been identified.
>>>
>>> I would recommend forcing LANG in your script to a known value, because
>>> that's the code that makes an assumption about the output of rpm.
>>>
>>> J
>>>
>>> On Tue, 4 Aug 2020 at 10:56, David Boyer <davieb at gmail.com> wrote:
>>>
>>>> Jeremy,
>>>>        If you notice, both iterations are being run from the xymonsvr.
>>>> I've added the LANG to see if the
>>>> two report it differently.
>>>>
>>>> So, by hand it looks:
>>>>
>>>> [davieb at xymonsvr ~]$ ~xymon/client/local/dateinfo
>>>> dhcp-common,4.3.6,18 Jul 2020,en_US.UTF-8
>>>>
>>>> Pulling the info out of xymon looks:
>>>>
>>>> [davieb at xymonsvr ~]$ ~xymon/server/bin/xymon localhost "clientlog
>>>> xymonsvr section=local:dateinfo"
>>>> [local:dateinfo]
>>>> dhcp-common,4.3.6,Jul 18 17:44:26,*C*
>>>>
>>>> Humm, there does appear to be a difference!  Checking the xymon user
>>>> itself, it UTF-8.
>>>> [xymon at xymonsvr ~]$ echo $LANG
>>>> en_US.UTF-8
>>>>
>>>>
>>>> That appears to be the issue though, I set the LANG=C and ran the
>>>> script by hand and get the same results when I pull it from xymon!
>>>> [davieb at xymonsvr ~]$ LANG=C;export LANG
>>>> [davieb at xymonsvr ~]$ ~xymon/client/local/dateinfo
>>>> dhcp-common,4.3.6,Jul 18 17:44:26,C
>>>>
>>>> Looking at the xymon.sh start script, it does not appear to set it
>>>> anywhere!  Guess I'll need to run that
>>>> to ground in the morning.
>>>>
>>>> Thanks for pointing me in the right direction!
>>>>
>>>> Dave
>>>>
>>>> On Mon, Aug 3, 2020 at 8:11 PM Jeremy Laidman <jeremy at laidman.org>
>>>> wrote:
>>>>
>>>>> David
>>>>>
>>>>> Update your script to, display the value of the LANG variable in
>>>>> addition to the RPM details (perhaps on a separate line), and see if the
>>>>> value differs between the script output (run from your shell) and the
>>>>> clientlog.
>>>>>
>>>>> I suspect LANG is set in your shell differently from how it's set in
>>>>> the xymon user's shell. RPM (or probably glibc) uses LANG to format the
>>>>> date according to the environment's locale. I'm guessing your shell has
>>>>> LANG set to something like en_US, whereas the xymon user's LANG is set to
>>>>> something like C, or is not set at all.
>>>>>
>>>>> Cheers
>>>>> Jeremy
>>>>>
>>>>> On Tue, 4 Aug 2020 at 08:32, David Boyer <davieb at gmail.com> wrote:
>>>>>
>>>>>> Hi,
>>>>>>     I've got a strange date issue.  I've written some local scripts
>>>>>> to pad information onto the combo message. Here is the background:
>>>>>>
>>>>>> 1. When you run the script by hand locally (take note of the date):
>>>>>>
>>>>>> [davieb at xymonsvr ~]$ ~xymon/client/local/dateinfo
>>>>>> dhcp-common,4.3.6,18 Jul 2020
>>>>>>
>>>>>> 2. When I pull the information from xymon server:
>>>>>>
>>>>>> [davieb at xymonsvr ~]$ ~xymon/server/bin/xymon localhost "clientlog
>>>>>> xymonsvr section=local:dateinfo"
>>>>>> [local:dateinfo]
>>>>>> dhcp-common,4.3.6,Jul 18 17:44:26
>>>>>>
>>>>>>
>>>>>> Notice how the date field gets modified?  I can't figure out why. The
>>>>>> only thing I can think of is something within the xymon code, but I don't
>>>>>> know why it would?
>>>>>>
>>>>>> Here's the simple script:
>>>>>>
>>>>>> [davieb at xymonsvr ~]$ cat ~xymon/client/local/dateinfo
>>>>>> #!/bin/sh
>>>>>>
>>>>>> OS=`uname -s`
>>>>>> RPM=dhcp-common
>>>>>>
>>>>>> if [ ${OS} = "Linux" ]; then
>>>>>>    VERSION=`rpm -q ${RPM} --qf "%{VERSION}\n"`
>>>>>>    INSTALLED=`rpm -q ${RPM} --qf "%{INSTALLTIME:date}\n"|awk {'print
>>>>>> $2" "$3" "$4'}`
>>>>>> fi
>>>>>>
>>>>>> echo "${RPM},${VERSION},${INSTALLED}"
>>>>>>
>>>>>> Does anybody have any idea what is going on?
>>>>>>
>>>>>> Thanks,
>>>>>> Dave
>>>>>> _______________________________________________
>>>>>> Xymon mailing list
>>>>>> Xymon at xymon.com
>>>>>> http://lists.xymon.com/mailman/listinfo/xymon
>>>>>>
>>>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.xymon.com/pipermail/xymon/attachments/20200804/08de533a/attachment.htm>


More information about the Xymon mailing list