diff options
Diffstat (limited to 'lib/ssh-forcecommand')
-rwxr-xr-x | lib/ssh-forcecommand | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/ssh-forcecommand b/lib/ssh-forcecommand new file mode 100755 index 0000000..16e04c5 --- /dev/null +++ b/lib/ssh-forcecommand @@ -0,0 +1,37 @@ +#!/usr/bin/env perl +# Copyright © 2010 by Daniel Friesel <derf@finalrewind.org> +# 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 <configfile>\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"); |