Welcome to Pandora FMS Community › Forums › Community support › Advanced troubleshooting › if-selection does not handle exit codes correctly in generic_proc module
-
if-selection does not handle exit codes correctly in generic_proc module
Posted by thomas on November 10, 2017 at 13:35I’m trying to do something similar to the ICMP Checks in https://wiki.pandorafms.com/index.php?title=Pandora:Documentation_en:Operations section 1.7.1
but the outcome of module_exec does not show up as expected in the FMS Console. Running the command locally does indeed work.The manual gives this example:
module_begin module_name Ping module_type generic_proc module_exec ping -c 1 192.168.100.54 >/dev/null 2>&1; if [ $? == 0 ]; then echo 1; else echo 0; fi module_end
My intallation is base on pandorafms.agent_unix_7.0NG.714.deb, pandorafms.console_7.0NG.714.deb and pandorafms.server_7.0NG.714.deb
Excerpt from my /etc/pandora/pandora_agent.conf, where I’ve cleaned up the configuration to make the bug more obvious:
module_begin module_name Always 0 module_type generic_proc module_exec echo 0 module_end module_begin module_name Always 1 module_type generic_proc module_exec echo 1 module_end module_begin module_name Always 0 complicated module_type generic_proc module_exec false; if [ $? == 0 ]; then echo 1; else echo 0; fi module_end module_begin module_name Always 1 complicated module_type generic_proc module_exec true; if [ $? == 0 ]; then echo 1; else echo 0; fi module_end
Running the commands manually in the shell works as expected:
$ echo 0
0$ echo 1
1$Â false; if [ $? == 0 ]; then echo 1; else echo 0; fi
0$Â true; if [ $? == 0 ]; then echo 1; else echo 0; fi
1But, the FMS Console shows:
Always 0
0
Always 1
1
Always 0 complicated
0
Always 1 complicated
0Thus it seems like the if-selection does not work when running in the Pandora Agent, but it works when running from the command line.
vic replied 7 years, 2 months ago 2 Members · 5 Replies -
5 Replies
-
::
module_begin module_name Simple 0 module_type generic_proc module_exec true; echo $? module_end module_begin module_name Simple 1 module_type generic_proc module_exec false; echo $? module_end
Using the shell:
$ true; echo $?
0$ false; echo $?
1And the FMS Console shows:
Simple 0
0Simple 1
1This works as expected. (But it is of course not what I want to do.)
-
-
::
Let’s try to find out if it is something special with the  $? variable!
module_begin module_name Always 0 fool it again module_type generic_proc module_exec a=1;Â if [ $a == 0 ]; then echo 1; else echo 0; fi module_end module_begin module_name Always 1 fool it again module_type generic_proc module_exec a=0;Â if [ $a == 0 ]; then echo 1; else echo 0; fi module_end
Using the shell:
$ a=1;Â if [ $a == 0 ]; then echo 1; else echo 0; fi
0
$ a=0;Â if [ $a == 0 ]; then echo 1; else echo 0; fi
1The Pandora FMS Console:
Always 0 fool it again
0
Always 1 fool it again
0It seems I can’t even get an ordinary variable to work inside the if-clause.
-
-