Skip to content
Snippets Groups Projects
Commit 8d85172f authored by Per Cederqvist's avatar Per Cederqvist
Browse files

Added check_hydra

parent 1e8aa5aa
No related branches found
No related tags found
Loading
LIBEXECDIR = /usr/local/nagios/libexec/ LIBEXECDIR = /usr/local/nagios/libexec/
SCRIPTS = check_cups check_glsa check_saned check_lpd check_hddtemp \ SCRIPTS = check_cups check_glsa check_saned check_lpd check_hddtemp \
check_link_status check_true check_lysrdiff check_syslog \ check_link_status check_true check_lysrdiff check_syslog \
check_ping check_enodia_monitored check_hostextinfo check_ping check_enodia_monitored check_hostextinfo \
check_hydra
all:; all:;
......
#!/usr/bin/env python
import sys
import socket
import pcl_expect
import pcl_expect.telnet
def debug(s):
print s
#pcl_expect.debug = debug
def critical(msg):
print "CRITICAL - %s" % msg
sys.exit(2)
def warning(msg):
print "WARNING - %s" % msg
sys.exit(1)
def ok(msg):
print "OK - %s" % msg
sys.exit(0)
def check_hydra(hydra, hostname):
try:
t = pcl_expect.telnet.Telnet(hydra, 'telnet')
except socket.gaierror, err:
critical("looking up %s: %s" % (hydra, err[1]))
except socket.error, err:
critical("connecting to %s: %s" % (hydra, err[1]))
t.send(hostname + '\n')
x = pcl_expect.Controller()
while x.loop():
if x.re(t, "%s\r?\n" % hostname):
break
elif x.timeout():
critical("no echo of hostname while talking to %s" % hydra)
x = pcl_expect.Controller()
while x.loop():
if x.re(t, "Attached to port [0-9]*\r?\n"):
break
elif x.re(t, "busy, do you wish to wait.*: "):
# FIXME: Only warn after an hour.
warning("port busy")
elif x.re(t, "Rotaries Defined:"):
critical("unexpected output from hydra: %s" % repr(t.consumed))
elif x.eof(t):
critical("unexpected EOF from telnet")
elif x.timeout():
critical("unexpected timeout while talking to the hydra")
t.send("\025") # Ctrl-U.
t.send("\n")
x = pcl_expect.Controller()
while x.loop():
if x.re(t, "%s .*login: " % hostname):
ok(repr(t.consumed.strip()))
elif x.timeout():
critical("timeout while waiting for login prompt")
if __name__ == '__main__':
check_hydra(sys.argv[1], sys.argv[2])
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment