summaryrefslogtreecommitdiffstats
path: root/web/attachments/154473-nagios_plugins-nagios_shell.patch
diff options
context:
space:
mode:
Diffstat (limited to 'web/attachments/154473-nagios_plugins-nagios_shell.patch')
-rw-r--r--web/attachments/154473-nagios_plugins-nagios_shell.patch168
1 files changed, 168 insertions, 0 deletions
diff --git a/web/attachments/154473-nagios_plugins-nagios_shell.patch b/web/attachments/154473-nagios_plugins-nagios_shell.patch
new file mode 100644
index 0000000..64e7d5f
--- /dev/null
+++ b/web/attachments/154473-nagios_plugins-nagios_shell.patch
@@ -0,0 +1,168 @@
1--- ../../original_sources/nagios-plugins-1.4.2/contrib/nagios_shell 2005-10-11 20:27:28.411568216 -0400
2+++ nagios-plugins-1.4.2/contrib/nagios_shell 2005-10-11 20:28:54.933414896 -0400
3@@ -0,0 +1,165 @@
4+#! /usr/bin/perl -T
5+
6+# changable variables
7+# set $NAGIOS_PLUGIN_DIR to the directory that contains the nagios plugins.
8+# Don't include a trailing '/'.
9+my($NAGIOS_PLUGIN_DIR)="PLUGIN_DIR_HERE";
10+
11+# Other commands that can be run via this shell. It is strongly
12+# recommended that all of these are specified with a full path name.
13+my(@other_commands) = (
14+);
15+
16+# set the PATH needed for the commands run under this shell.
17+$ENV{'PATH'} = "/bin:/usr/bin:/usr/sbin";
18+
19+#Name: nagiosshell
20+#Use: used as forced command under ssh as receiver for check_by_ssh plugin
21+#Function: Check provided command and runs it from predefined directory
22+# or fully specified path.
23+# Example: in ~nagios/.ssh/authorized_keys on system to be monitoed using
24+# check_by_ssh:
25+#
26+# command="/path/to/nagiosshell" from="nagios.example.org" ssh-rsa AAAAB3N...
27+#
28+# This has not been tested with the multiple passive mode of check_by_ssh.
29+
30+use warnings;
31+use strict;
32+
33+my($command, $exec_command, @args, @exec_args, $i);
34+
35+die("$0: Not running as forced command, \$SSH_ORIGINAL_COMMAND not found.\n")
36+ if (not exists($ENV{"SSH_ORIGINAL_COMMAND"}));
37+
38+($command, @args) = split(' ', $ENV{"SSH_ORIGINAL_COMMAND"});
39+if ($command !~ m#/#) {
40+ # then its a command name and not a full path
41+ if (! -x "$NAGIOS_PLUGIN_DIR/$command") {
42+ print "$0: Unable to find command $NAGIOS_PLUGIN_DIR/$command.\n";
43+ exit 3;
44+ } else {
45+ # create the fully qualified name
46+ ($exec_command) = ($command =~ m/^([A-z0-9_.-]+)$/);
47+ $exec_command = "$NAGIOS_PLUGIN_DIR/$exec_command";
48+ }
49+} else {
50+ # we have a qualified command path, verify it
51+ foreach $i (@other_commands) {
52+ $exec_command = $i if ($i eq $command);
53+ }
54+}
55+
56+if (! $exec_command) {
57+ print "$0: Unable to validate $command\n";
58+ exit 3;
59+}
60+
61+# set up a clean environment
62+# PATH is explicitly set at top of script in modifyable variables.
63+delete @ENV{'IFS', 'CDPATH', 'ENV', 'BASH_ENV', 'PERLLIB'};
64+
65+# clean the args
66+foreach (@args) {
67+ if ( m/^([^`;()]*)$/ ) {
68+ push(@exec_args, $1);
69+ } else {
70+ die ("$0: Unsafe argument $_ found. Exiting.\n");
71+ }
72+}
73+
74+# run the requested command without executing a shell.
75+if (@exec_args) {
76+ eval {no warnings 'all'; exec $exec_command $exec_command, @exec_args};
77+} else {
78+ eval {no warnings 'all'; exec $exec_command $exec_command};
79+}
80+
81+use warnings;
82+
83+die("$0: Unable to exec ($!) $exec_command with args: \"" . join('", "', @exec_args) . "\".\n");
84+
85+#TESTPREP:
86+# mkdir $NAGIOS_PLUGIN_DIR
87+# echo '#! /usr/bin/foo' > $NAGIOS_PLUGIN_BIN/check_foo
88+# echo '#! /bin/sh' > $NAGIOS_PLUGIN_BIN/check_bar
89+# echo 'ls "$@"' >> $NAGIOS_PLUGIN_BIN/check_bar
90+# chmod +x $NAGIOS_PLUGIN_BIN/check_bar $NAGIOS_PLUGIN_BIN/check_foo
91+
92+#TEST:
93+#- plugin unable to exec good args
94+# SSH_ORIGINAL_COMMAND='check_foo -w 3:5 -c 2,4,3 -d 12-34' ./nagios_shell
95+##Unable to exec (No such file or directory) /tmp/nagiosplug/check_foo
96+## with args: "-w", "3:5", "-c", "2,4,3", "-d", "12-34".
97+
98+#- plugin unable to exec bad args
99+# SSH_ORIGINAL_COMMAND='check_foo -w 3`5 -c 2,4,3 -d 12-34' ./nagios_shell
100+##./nagios_shell: Unsafe argument 3`5 found. Exiting.
101+
102+#- plugin unable to exec no args
103+# SSH_ORIGINAL_COMMAND='check_foo' ./nagios_shell
104+##./nagios_shell: Unable to exec (No such file or directory)
105+## /tmp/nagiosplug/check_foo with args: "".
106+
107+#- plugin able to exec good args
108+# SSH_ORIGINAL_COMMAND='check_bar -w 3:5 -c 2,4,3 -d 12-34' ./nagios_shell
109+##ls: 2,4,3: No such file or directory
110+##ls: 12-34: No such file or directory
111+
112+#- plugin able to exec bad args
113+# SSH_ORIGINAL_COMMAND='check_bar -w 35 -c 2,4,3 -d (12-34)' ./nagios_shell
114+##./nagios_shell: Unsafe argument (12-34) found. Exiting.
115+
116+#- plugin able to exec no args
117+# SSH_ORIGINAL_COMMAND='check_bar' ./nagios_shell
118+## list of files in directory
119+
120+#- non existant plugin no args
121+# SSH_ORIGINAL_COMMAND='check_zap' ./nagios_shell
122+##./nagios_shell: Unable to find command /tmp/nagiosplug/check_zap.
123+
124+#- non existant plugin bad args
125+# SSH_ORIGINAL_COMMAND='check_zap (foo' ./nagios_shell
126+##./nagios_shell: Unable to find command /tmp/nagiosplug/check_zap.
127+
128+#- non existant plugin good args
129+# SSH_ORIGINAL_COMMAND='check_zap foo' ./nagios_shell
130+##./nagios_shell: Unable to find command /tmp/nagiosplug/check_zap.
131+
132+#- explicit command unable to exec (non-existent) good args
133+# SSH_ORIGINAL_COMMAND='/usr/bin/nc1 -l /tmp' ./nagios_shell
134+##Unable to exec (No such file or directory) /usr/bin/nc1 with args:
135+## "-l", "/tmp".
136+
137+#- explicit command unable to exec (non-existent) bad args
138+# SSH_ORIGINAL_COMMAND='/usr/bin/nc1 -l (/tmp)' ./nagios_shell
139+##Unsafe argument (/tmp) found. Exiting.
140+
141+#- explicit command unable to exec (non-existent) no args
142+# SSH_ORIGINAL_COMMAND='/usr/bin/nc1' ./nagios_shell
143+##./nagios_shell: Unable to exec (No such file or directory)
144+## /usr/bin/nc1 with args: "".
145+
146+#- explicit command able to exec good args
147+# SSH_ORIGINAL_COMMAND='/usr/bin/ls -l /dev/null' ./nagios_shell
148+##crw-rw-rw- 1 rouilj None 1, 3 Sep 24 23:19 /dev/null
149+
150+#- explicit command able to exec bad args
151+# SSH_ORIGINAL_COMMAND='/usr/bin/ls -l `/dev/null`' ./nagios_shell
152+##./nagios_shell: Unsafe argument `/dev/null` found. Exiting.
153+
154+#- explicit command able to exec no args
155+# SSH_ORIGINAL_COMMAND='/usr/bin/ls ' ./nagios_shell
156+##list of files in directory
157+
158+#- explicit command not found in list
159+# SSH_ORIGINAL_COMMAND='/usr/bin/nc3' ./nagios_shell
160+##./nagios_shell: Unable to validate /usr/bin/nc3
161+
162+#- explicit command not found in list bad args
163+# SSH_ORIGINAL_COMMAND='/usr/bin/nc3 (foo' ./nagios_shell
164+##./nagios_shell: Unable to validate /usr/bin/nc3
165+
166+#- explicit command not found in list good args
167+# SSH_ORIGINAL_COMMAND='/usr/bin/nc3 foo' ./nagios_shell
168+##./nagios_shell: Unable to validate /usr/bin/nc3