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

David Boyer davieb at gmail.com
Thu Aug 6 00:17:14 CEST 2020


Jeremy,
            I forgot to get back to you on this.   SUCCESS !!!   Changed
the LC_ALL and it is working as expected now...
Thanks very very much... I owe ya!

Dave

On Mon, Aug 3, 2020 at 11:25 PM Jeremy Laidman <jeremy at laidman.org> wrote:

> 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/20200805/c9bf9c77/attachment.htm>


More information about the Xymon mailing list