[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