From cb44a446e5197c51881551cbfde945571933c2f5 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Fri, 11 Feb 2011 18:42:17 +0100 Subject: Initial commit (import from chaosdorf-admin-toolkit) --- lib/forcecommand | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100755 lib/forcecommand diff --git a/lib/forcecommand b/lib/forcecommand new file mode 100755 index 0000000..16e04c5 --- /dev/null +++ b/lib/forcecommand @@ -0,0 +1,37 @@ +#!/usr/bin/env perl +# Copyright © 2010 by Daniel Friesel +# License: WTFPL: +# 0. You just DO WHAT THE FUCK YOU WANT TO. +# +# SSH forcecommand to be used for nagios ssh checks etc. +# Example line for ssh authorized_keys file: +# command="/usr/local/lib/nagios/forcecommand /etc/nagios/forcecommand.cfg",no-agent-forwarding,no-port-forwarding,no-pty,no-X11-forwarding $key +# +# Configfile format: +# ssh_command = real_command +# Example: +# check_users = /usr/lib/nagios/plugins/check_users -w 5 -c 10 + +use strict; +use warnings; + +my $conffile = shift or die("Usage: $0 \n"); +my %commands; +my $input = $ENV{'SSH_ORIGINAL_COMMAND'} or die("No command\n");; + +open(my $conf, '<', $conffile) or die("Can't open $conffile: $!\n"); + +while (my $line = <$conf>) { + my ($key, $value) = split(/ \s* = \s* /x, $line); + if ($key and $value) { + $commands{$key} = $value; + } +} +close($conf) or die("Cannot close $conffile: $!\n"); + +if (exists $commands{$input}) { + exec($commands{$input}); + exit 1; +} + +die("Unknown command\n"); -- cgit v1.2.3