Page 1 of 2

check_ncpa.py plugin no longer working

Posted: Sun Mar 04, 2018 9:45 pm
by doughnuts
G'day all,

I have a Nagios v4.3.4 instance running on CentOS 7 that includes usage of the check_ncpa.py plugin to monitor Windows hosts. This has been running fine for a while. We ran an update on Friday that pulled the latest NCPA plugin script from https://assets.nagios.com/downloads/ncp ... cpa.tar.gz, and it no longer works. I can see that the files have definitely changed as the new file is a bit larger in addition to the activity in GitHub. When running the plugin now I get this (which includes a return code of 127):

[libexec]$ ls -l check_ncpa.py
-rwxr-xr-x. 1 nagios nagios 10278 Feb 8 03:31 check_ncpa.py
[libexec]$ ./check_ncpa.py
: No such file or directory

Does anyone know of this issue, or can anyone provide some assistance in troubleshooting it?

Thanks

Re: check_ncpa.py plugin no longer working

Posted: Mon Mar 05, 2018 2:52 pm
by kyang
Please show us the location of check_ncpa.py

Code: Select all

find / -name check_ncpa.py
Please run this from the command line and show us the output.

Code: Select all

/usr/local/nagios/libexec/check_ncpa.py

Re: check_ncpa.py plugin no longer working

Posted: Mon Mar 05, 2018 5:29 pm
by doughnuts
I did include that info in my original post, though maybe I didn't present it clearly enough (probably should have formatted it better and included a pwd)

Code: Select all

[~]$ sudo find / -name check_ncpa.py
/usr/local/nagios/libexec/check_ncpa.py
[~]$ /usr/local/nagios/libexec/check_ncpa.py
: No such file or directory

Re: check_ncpa.py plugin no longer working

Posted: Tue Mar 06, 2018 3:26 pm
by scottwilkerson
Let's make sure it isn't dying right when it is looking for python

lets run

Code: Select all

ls -al /usr/bin/env
which python
send them back to this post

lets also try

Code: Select all

cd /usr/local/nagios/libexec
python check_ncpa.py

Re: check_ncpa.py plugin no longer working

Posted: Tue Mar 06, 2018 5:36 pm
by doughnuts
Seems like we're narrowing it down...

Code: Select all

[libexec]$ ls -al /usr/bin/env
-rwxr-xr-x. 1 root root 28992 Nov  6  2016 /usr/bin/env
[libexec]$ which python
/usr/bin/python
[libexec]$ python check_ncpa.py 
Usage: check_ncpa.py [options]
...
To add a bit more info: I have two separate environments, UAT and PROD. Both were running fine for months, and I know both are set up exactly the same as I use Ansible to configure them. A playbook was run on the UAT server the other day which pulled in a new version of the check_ncpa.py script and it hasn't worked since. PROD has not had the script updated and is still working fine. Given the outcome of the above test I checked the shebang at the top of both scripts and they are the same: #!/usr/bin/env python. The output of the commands I ran above are the same on both servers. Both servers are running Python 2.7.5.

Thanks for the assistance so far.

Re: check_ncpa.py plugin no longer working

Posted: Wed Mar 07, 2018 9:59 am
by scottwilkerson
I'm guessing this is going to work but lets try it anyways, if you replace the shebang with this, does it work?

Code: Select all

#!/usr/bin/python
Does it work?

And if so, we need to figure out why in this machine this doesn't return proper

Code: Select all

/usr/bin/env python

Re: check_ncpa.py plugin no longer working

Posted: Wed Mar 07, 2018 6:37 pm
by doughnuts
G'Day Scott,

Thanks again for the reply. Output of your requests below:

Code: Select all

[libexec]$ head -n 3 check_ncpa.py 
#!/usr/bin/python
"""
SYNOPSIS
[libexec]$ ./check_ncpa.py 
-bash: ./check_ncpa.py: /usr/bin/python^M: bad interpreter: No such file or directory
[libexec]$ /usr/bin/python
Python 2.7.5 (default, Aug  4 2017, 00:39:18) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux2
If I copy the check_ncpa.py file from our production server - it's the previous version - it works fine. In the output below, the .bak file is the most recent file from https://assets.nagios.com/downloads/ncp ... cpa.tar.gz and the .py file is the copy from our prod system.

Code: Select all

[libexec]$ ls -l check_ncpa*
-rwxr-xr-x. 1 nagios nagios  9820 Mar  8 10:32 check_ncpa.py
-rwxr-xr-x. 1 nagios nagios 10274 Mar  8 10:27 check_ncpa.py.bak
Thanks again,
Matt

Re: check_ncpa.py plugin no longer working

Posted: Wed Mar 07, 2018 10:56 pm
by scottwilkerson

Code: Select all

-bash: ./check_ncpa.py: /usr/bin/python^M: bad interpreter: No such file or directory
This means however this file was edited it got windows line endings on it

which leads me to an interesting question, when you downloaded it, how did you get in on the server? Did you download it directly and untar it, or did you download it to a windows machine and somehow copy the text for the file over?

I would strongly suggest doing this to get the file on the server:

Code: Select all

wget https://assets.nagios.com/downloads/ncpa/check_ncpa.tar.gz
tar xzf check_ncpa.tar.gz
chmod +x check_ncpa.py
cp check_ncpa.py /usr/local/nagios/libexec/

Re: check_ncpa.py plugin no longer working

Posted: Thu Mar 08, 2018 5:49 am
by doughnuts
I used the Ansible unarchive command, which downloads the file from assets.nagios.com directly to the target server and uncompresses it there. My Ansible control machine is also a MacBook so there were no Windows machines involved. Perhaps the packaged file itself has Windows line endings in it? Both the UAT and PROD servers were originally set up this way and worked fine until this new file. I'll try and directly wget it again tomorrow when I'm back at work just in case but I'm pretty sure I haven't altered that file in any way.

Re: check_ncpa.py plugin no longer working

Posted: Thu Mar 08, 2018 10:10 am
by scottwilkerson
oh my goodness it does....

I have modified it and am attaching it here
I will contact the developer to have this adjusted