Question: When I execute check_nrpe command with some arguments, I get the message “CHECK_NRPE: Received 0 bytes from daemon. Check the remote server logs for error messages.”. How do I fix this issue?
Answer: The issue is very straight forward. check_nrpe doesn’t take any arguments by default. You should enable the command line arguments for check_nrpe as shown below.
Verify the check_nrpe error message
Just for testing purpose, let us assume that you are execuing the following check_nrpe command that displays the “CHECK_NRPE: Received 0 bytes from daemon.” error message.
$ /usr/local/nagios/libexec/check_nrpe -H 192.168.1.20 -c check_disk -a 60 80 /dev/sdb1 CHECK_NRPE: Received 0 bytes from daemon. Check the remote server logs for error messages.
If you view the /var/log/messages on the remote host, (in the above example, that is 192.168.1.20), you’ll see the nrpe error “Error: Request contained command arguments!” as shown below, indicating that check_nrpe is not enabled to take the command arguments.
$ tail -f /var/log/messages Dec 5 11:11:52 dev-db xinetd[2536]: START: nrpe pid=24187 from=192.168.101.108 Dec 5 11:11:52 dev-db nrpe[24187]: Error: Request contained command arguments! Dec 5 11:11:52 dev-db nrpe[24187]: Client request was invalid, bailing out... Dec 5 11:11:52 dev-db xinetd[2536]: EXIT: nrpe status=0 pid=24187 duration=0(sec)
Enable check_nrpe command arguments
To enable command arguments in NRPE, you should do the following two things.
1. Configure NRPE with –enable-command-args
Typically when you install NRPE on the remote host, you’ll do ./configure without any arguments. To enable support for command arguments in the NRPE daemon, you should install it with –enable-command-args as shown below.
[remotehost]# tar xvfz nrpe-2.12.tar.gz [remotehost]# cd nrpe-2.12 [remotehost]# ./configure --enable-command-args [remotehost]# make all [remotehost]# make install-plugin [remotehost]# make install-daemon [remotehost]# make install-daemon-config [remotehost]# make install-xinetd
2. Modify nrpe.cfg and set dont_blame_nrpe
Modify the /usr/local/nagios/etc/nrpe.cfg on the remote server and set the dont_blame_nrpe directive to 1 as shown below.
$ /usr/local/nagios/etc/nrpe.cfg dont_blame_nrpe=1
Execute check_nrpe with command arguments
After the above two changes, if you execute the check_nrpe for this particular remote host, you’ll not see the error message anymore as shown below.
$ /usr/local/nagios/libexec/check_nrpe -H 192.168.1.20 -c check_disk -a 60 80 /dev/sdb1 DISK OK - free space: / 111199 MB (92% inode=99%);| /=9319MB;101662;114370;0;127078
Security Warning
Enabling NRPE command line arguments is a security risk. If you don’t know what you are doing, don’t enable this.
Probably by now you’ve already figured out that you can’t blame NRPE if something goes wrong. After all you did set dont_blame_nrpe to 1.
Linux provides several powerful administrative tools and utilities which will help you to manage your systems effectively. If you don’t know what these tools are and how to use them, you could be spending lot of time trying to perform even the basic administrative tasks. The focus of this course is to help you understand system administration tools, which will help you to become an effective Linux system administrator.Get the Linux Sysadmin Course Now!
If you enjoyed this article, you might also like..
|
|
|
|






My name is Ramesh Natarajan. I will be posting instruction guides, how-to, troubleshooting tips and tricks on Linux, database, hardware, security and web. My focus is to write articles that will either teach you or help you resolve a problem. Read more about
{ 5 comments… read them below or add one }
This is unbelievable. I went through the whole hassle of installing the system through all these make commands and then making an RPM so I could distribute nagios to about 45 machines, ONLY to find out I need to go through the whole process again if I want the command arguments. Why wouldn’t this be built in by default?
Isn’t life filled with enough tedium?
There is no need to re-compile package. If you are using debian packge the argument support can be just enabled by making dont_blame_nrpe=1 in nrpe.cfg file
Cheers..
@Chris Jefferies
It’s not enabled by default because it’s a SECURITY VULNERABILITY.
That’s why it’s called “dont_blame_nrpe”
If you turn it on, and nrpe command arguments are used to break into your computer:
“Don’t Blame NRPE”
You turned it on.
You are responsible for the consequences.
If you don’t understand the risks and consequences, don’t turn it on.
(If you don’t understand a contract, don’t sign it.)
Dosen’t work for me . i have dont_blame_nrpe=1 but still getting the same error ..
[root@guest1 global]# /usr/local/nagios/libexec/check_nrpe -H 192.168.229.130 -c check_load -a 20 30
CHECK_NRPE: Received 0 bytes from daemon. Check the remote server logs for error messages.
————————————————————————————————–
Sep 18 22:29:53 nagclient nrpe[1824]: Handling the connection…
Sep 18 22:29:53 nagclient nrpe[1824]: Error: Request contained command arguments!
on the remote host
./configure –enable-command-args