[Nagiosplug-devel] check_tcp does not intercept Unicode responses

James Miller jimm at simutronics.com
Fri May 18 20:51:51 CEST 2007


Hello everyone


I have an app I want to watch using the check_tcp plug-in.  The issue is the
app sends it responses in Unicode and check_tcp doesn't seem to know how to
interpret the response.  It sees the first I in the response, quits reading
the rest of the response after it see the first '\0' and it thinks the
service is UP.

The command I run is (from the command line:
./check_tcp -v -H <my_host> -p <my_tcp_port> -s $'ISWORLDUP\t2025\n' -e
$'I\0S\0W\0R\0L\0D\0U\0P\0\t\0Y\0E\0S\0\n'
Using service TCP
Port: 0
flags: 0x2
server_expect_count: 1
        0: I
received 27 bytes from host
#-raw-recv-------#
I
#-raw-recv-------#
looking for [I] anywhere in [I]
found it
TCP OK - 0.162 second response time on port 49276
[I]|time=0.161719s;0.000000;0.000000;0.000000;10.000000

When a 'world is down' the response is "ISWORLDUP	NO" or in Unicode
"I\0S\0W\0O\0R\0L\0D\0U\0P\0\t\0N\0O\n"


Here's an example from strace if I telnet to the app and check to see if the
world is UP: 
read(0, "ISWORLDUP\t2025\n", 8160)      = 15
select(4, [0 3], [3], [3], {0, 0})      = 1 (out [3], left {0, 0})
send(3, "ISWORLDUP\t2025\n", 15, 0)     = 15
select(4, [0 3], [], [3], {0, 0})       = 0 (Timeout)
select(4, [0 3], [], [3], NULL)         = 1 (in [3])
recv(3, "I\0S\0W\0O\0R\0L\0D\0U\0P\0\t\0Y\0E\0S\0\n", 8142, 0) = 27
select(4, [0 3], [1], [3], {0, 0})      = 1 (out [1], left {0, 0})
write(1, "I\0S\0W\0O\0R\0L\0D\0U\0P\0\t\0Y\0E\0S\0\n", 27ISWORLDUP      YES
) = 27
select(4, [0 3], [], [3], {0, 0})       = 0 (Timeout)
select(4, [0 3], [], [3], NULL

I was hoping someone might have some insight to this issue.


Thanks,
Jim

 



James Miller - MCSE RHCE CISSP
Sr Systems & Network Administrator
Simutronics Corp.
www.play.net
636.946.4263 x113 





More information about the Devel mailing list