Wrap up basic shinken pack
This commit is contained in:
parent
8b8c33dad6
commit
2db6a85b51
|
@ -1,6 +0,0 @@
|
|||
# -*- mode: nagios -*-
|
||||
|
||||
define command {
|
||||
command_name check_rattail_daemon
|
||||
command_line $PLUGINSDIR$/check_by_ssh -H $HOSTADDRESS$ -C "check-rattail-daemon $ARG1$" --logname=rattail
|
||||
}
|
114
libexec/check_rattail_daemon_by_ssh.py
Executable file
114
libexec/check_rattail_daemon_by_ssh.py
Executable file
|
@ -0,0 +1,114 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
# Copyright (C) 2013:
|
||||
# Gabes Jean, naparuba@gmail.com
|
||||
# Pasche Sebastien, sebastien.pasche@leshop.ch
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||
# copy of this software and associated documentation files (the "Software"),
|
||||
# to deal in the Software without restriction, including without limitation
|
||||
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
# and/or sell copies of the Software, and to permit persons to whom the
|
||||
# Software is furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
# DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
|
||||
|
||||
'''
|
||||
This script is a check for lookup at another check over ssh without
|
||||
having an agent on the other side
|
||||
'''
|
||||
import os
|
||||
import sys
|
||||
import optparse
|
||||
import base64
|
||||
import subprocess
|
||||
try:
|
||||
import paramiko
|
||||
except ImportError:
|
||||
print "ERROR : this plugin needs the python-paramiko module. Please install it"
|
||||
sys.exit(2)
|
||||
|
||||
# Ok try to load our directory to load the plugin utils.
|
||||
my_dir = os.path.dirname(__file__)
|
||||
sys.path.insert(0, my_dir)
|
||||
|
||||
try:
|
||||
import schecks
|
||||
except ImportError:
|
||||
print "ERROR : this plugin needs the local schecks.py lib. Please install it"
|
||||
sys.exit(2)
|
||||
|
||||
|
||||
VERSION = "0.1"
|
||||
|
||||
|
||||
def execute_check(client, check_path):
|
||||
# Beware of the export!
|
||||
stdin, stdout, stderr = client.exec_command(check_path)
|
||||
|
||||
lines = [line for line in stdout]
|
||||
if len(lines) == 0:
|
||||
return False
|
||||
|
||||
exitcode = stdout.channel.recv_exit_status()
|
||||
|
||||
# Before return, close the client
|
||||
client.close()
|
||||
|
||||
return lines[0].strip(), exitcode
|
||||
|
||||
|
||||
parser = optparse.OptionParser(
|
||||
"%prog [options]", version="%prog " + VERSION)
|
||||
parser.add_option('-H', '--hostname',
|
||||
dest="hostname", help='Hostname to connect to')
|
||||
parser.add_option('-p', '--port',
|
||||
dest="port", type="int", default=22,
|
||||
help='SSH port to connect to. Default : 22')
|
||||
parser.add_option('-i', '--ssh-key',
|
||||
dest="ssh_key_file", help='SSH key file to use. By default will take ~/.ssh/id_rsa.')
|
||||
parser.add_option('-u', '--user',
|
||||
dest="user", help='remote use to use. By default shinken.')
|
||||
parser.add_option('-P', '--passphrase',
|
||||
dest="passphrase", help='SSH key passphrase. By default will use void')
|
||||
parser.add_option('-r', '--check_path',
|
||||
dest="check_path", help='Path of the remote perfdata check to execute')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# Ok first job : parse args
|
||||
opts, args = parser.parse_args()
|
||||
if args:
|
||||
parser.error("Does not accept any argument.")
|
||||
|
||||
hostname = opts.hostname
|
||||
if not hostname:
|
||||
print "Error : hostname parameter (-H) is mandatory"
|
||||
sys.exit(2)
|
||||
|
||||
check_path = opts.check_path
|
||||
if not check_path:
|
||||
print "Error : check_path parameter (--check_path) is mandatory"
|
||||
sys.exit(2)
|
||||
port = opts.port
|
||||
ssh_key_file = opts.ssh_key_file or os.path.expanduser('~/.ssh/id_rsa')
|
||||
user = opts.user or 'shinken'
|
||||
passphrase = opts.passphrase or ''
|
||||
|
||||
# Ok now connect, and try to get values for memory
|
||||
client = schecks.connect(hostname, port, ssh_key_file, passphrase, user)
|
||||
result, exitcode = execute_check(client, check_path)
|
||||
|
||||
print result
|
||||
sys.exit(exitcode)
|
6
pack/commands.cfg
Normal file
6
pack/commands.cfg
Normal file
|
@ -0,0 +1,6 @@
|
|||
# -*- mode: nagios -*-
|
||||
|
||||
define command {
|
||||
command_name check_rattail_daemon
|
||||
command_line $PLUGINSDIR$/check_rattail_daemon_by_ssh.py -H $HOSTADDRESS$ -p $_HOSTSSH_PORT$ -u $_HOSTSSH_USER$ -i $_HOSTSSH_KEY$ -P "$_HOSTSSH_KEY_PASSPHRASE$" -r "check-rattail-daemon $ARG1$"
|
||||
}
|
5
pack/rattail.pack
Normal file
5
pack/rattail.pack
Normal file
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"name": "rattail",
|
||||
"description": "Can check various Rattail daemons to ensure they're running. Performs checks using SSH.",
|
||||
"path": "software/"
|
||||
}
|
|
@ -1,9 +1,15 @@
|
|||
{
|
||||
"name": "rattail",
|
||||
"types": ["pack"],
|
||||
"version": "1.0",
|
||||
"version": "0.4",
|
||||
"homepage": "https://rattailproject.org/",
|
||||
"author": "Lance Edgar",
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Lance Edgar",
|
||||
"email": "lance@edbob.org"
|
||||
}
|
||||
],
|
||||
"description": "Can check various Rattail daemons to ensure they're running. Performs checks using SSH.",
|
||||
"license": "AGPL"
|
||||
}
|
Loading…
Reference in a new issue