1234567891011121314151617181920212223242526272829303132333435363738 |
- #!/usr/bin/env python
- import os
- import re
- import shlex
- import subprocess
- import sys
- allowed = [
- r'^/usr/bin/lsb_release\s+-d$',
- r'^/usr/lib/nagios/plugins/check_disk -w \d+% -c \d+% -p /[/a-z]*$',
- r'^/usr/lib/nagios/plugins/check_load -w \d+(,\d+,\d+)? -c \d+(,\d+,\d+)?$',
- r'^/usr/lib/nagios/plugins/check_mysql -u [a-z]+ -p [0-9a-zA-Z]+',
- r'^/usr/lib/nagios/plugins/check_mysql_health --user(name)?=[a-z]+ --pass(word)?=[0-9a-zA-Z]+ --mode=[a-z-]+$',
- # r'^/usr/lib/nagios/plugins/check_',
- ]
- cmdline = os.getenv('SSH_ORIGINAL_COMMAND')
- if not cmdline:
- print 'This is just a wrapper, no command specified!'
- sys.exit(3)
- for maybe in allowed:
- if re.match(maybe, cmdline):
- cmdline = shlex.split(cmdline)
- try:
- cmd = subprocess.Popen(cmdline, stdout=subprocess.PIPE)
- except Exception, exc:
- print 'Could not execute plugin ("%s"): %s' % (' '.join(cmdline), exc)
- sys.exit(3)
- else:
- print cmd.communicate()[0].rstrip()
- sys.exit(cmd.returncode)
- print '%s: No allowed command found!' % sys.argv[0]
- sys.exit(3)
|