aboutsummaryrefslogtreecommitdiff
path: root/contrib/restrict.pl
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/restrict.pl')
-rwxr-xr-xcontrib/restrict.pl26
1 files changed, 26 insertions, 0 deletions
diff --git a/contrib/restrict.pl b/contrib/restrict.pl
new file mode 100755
index 00000000..75ea5698
--- /dev/null
+++ b/contrib/restrict.pl
@@ -0,0 +1,26 @@
+#!/usr/bin/perl
+
+eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
+ if 0;
+
+# Set this to your local Nagios plugin path
+my $pluginpath = "/usr/libexec/nagios/plugins/";
+
+# Put all the legal commands (i.e. the commands that are
+# not Nagios checks but are allowed to be executed anyway)
+# in the following associative array.
+my %legal_cmds = ("nc" => "/usr/sbin/nc");
+
+# This will not work on OpenSSH
+# It does work on ssh-1.2.27-1i
+@arg = split ' ',$ENV{'SSH_ORIGINAL_COMMAND'};
+
+$arg[0] =~ s/.*\///; # strip leading path
+$arg[0] =~ tr/-_.a-zA-Z0-9/X/c; # change atypical chars to X
+
+if (!defined ($cmd = $legal_cmds{$arg[0]}))
+{
+ $cmd = $pluginpath . $arg[0];
+}
+
+exec { $cmd } @arg or die "Can't exec $cmd: $!";