mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-29 08:45:12 +02:00
2010-06-18 Ramon Novoa <rnovoa@artica.es>
* unix/pandora_exec: Added to repository. pandora_exec script. * unix/pandora_agent_installer, unix/DEBIAN/postinst, unix/DEBIAN/make_deb_package.sh, unix/pandora_agent.spec: Added the pandora_exec script to the installation. * unix/pandora_agent_daemon: Added support for running the agent as an unprivileged user. * unix/pandora_agent: Added timeout support for module_exec modules. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@2915 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
This commit is contained in:
parent
11a17092c5
commit
598be13059
@ -1,3 +1,16 @@
|
|||||||
|
2010-06-18 Ramon Novoa <rnovoa@artica.es>
|
||||||
|
|
||||||
|
* unix/pandora_exec: Added to repository. pandora_exec script.
|
||||||
|
|
||||||
|
* unix/pandora_agent_installer, unix/DEBIAN/postinst,
|
||||||
|
unix/DEBIAN/make_deb_package.sh, unix/pandora_agent.spec: Added the
|
||||||
|
pandora_exec script to the installation.
|
||||||
|
|
||||||
|
* unix/pandora_agent_daemon: Added support for running the agent as
|
||||||
|
an unprivileged user.
|
||||||
|
|
||||||
|
* unix/pandora_agent: Added timeout support for module_exec modules.
|
||||||
|
|
||||||
2010-06-14 Junichi Satoh <junichi@rworks.jp>
|
2010-06-14 Junichi Satoh <junichi@rworks.jp>
|
||||||
|
|
||||||
* unix/pandora_agent_installer: Set execute bit to startup script
|
* unix/pandora_agent_installer: Set execute bit to startup script
|
||||||
|
@ -46,6 +46,7 @@ chmod 755 -R temp_package/DEBIAN
|
|||||||
cp -aRf * temp_package/usr/share/pandora_agent/
|
cp -aRf * temp_package/usr/share/pandora_agent/
|
||||||
cp -aRf tentacle_client temp_package/usr/bin/
|
cp -aRf tentacle_client temp_package/usr/bin/
|
||||||
cp -aRf pandora_agent temp_package/usr/bin/
|
cp -aRf pandora_agent temp_package/usr/bin/
|
||||||
|
cp -aRf pandora_exec temp_package/usr/bin/
|
||||||
cp -aRf pandora_agent_daemon temp_package/etc/init.d/pandora_agent_daemon
|
cp -aRf pandora_agent_daemon temp_package/etc/init.d/pandora_agent_daemon
|
||||||
cp Linux/pandora_agent.conf temp_package/etc/pandora/
|
cp Linux/pandora_agent.conf temp_package/etc/pandora/
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
PANDORA_LOG=/var/log/pandora/pandora_agent.log
|
PANDORA_LOG=/var/log/pandora/pandora_agent.log
|
||||||
PANDORA_BIN=/usr/bin/pandora_agent
|
PANDORA_BIN=/usr/bin/pandora_agent
|
||||||
|
PANDORA_EXEC_BIN=/usr/bin/pandora_agent
|
||||||
PANDORA_HOME=/usr/share/pandora_agent
|
PANDORA_HOME=/usr/share/pandora_agent
|
||||||
PANDORA_TEMP=/var/spool/pandora/data_out
|
PANDORA_TEMP=/var/spool/pandora/data_out
|
||||||
PANDORA_CFG=/etc/pandora
|
PANDORA_CFG=/etc/pandora
|
||||||
@ -21,6 +22,7 @@ echo "$LOG_TIMESTAMP Pandora FMS installer has created this file at startup" > $
|
|||||||
|
|
||||||
echo "Setting secure permissions and ownership for all Pandora FMS Agent files..."
|
echo "Setting secure permissions and ownership for all Pandora FMS Agent files..."
|
||||||
chmod 700 $PANDORA_BIN
|
chmod 700 $PANDORA_BIN
|
||||||
|
chmod 700 $PANDORA_EXEC_BIN
|
||||||
chmod 600 $PANDORA_HOME/pandora_agent.conf
|
chmod 600 $PANDORA_HOME/pandora_agent.conf
|
||||||
chmod -R 700 $PANDORA_HOME/plugins
|
chmod -R 700 $PANDORA_HOME/plugins
|
||||||
chown -R root $PANDORA_HOME
|
chown -R root $PANDORA_HOME
|
||||||
@ -28,6 +30,7 @@ chmod -R 600 $PANDORA_TEMP
|
|||||||
chmod 640 $PANDORA_LOG
|
chmod 640 $PANDORA_LOG
|
||||||
chgrp root $PANDORA_LOG
|
chgrp root $PANDORA_LOG
|
||||||
chown -R root:root $PANDORA_BIN
|
chown -R root:root $PANDORA_BIN
|
||||||
|
chown -R root:root $PANDORA_EXEC_BIN
|
||||||
|
|
||||||
echo "Linking start-up daemon script to /etc/rc$INITLV.d";
|
echo "Linking start-up daemon script to /etc/rc$INITLV.d";
|
||||||
update-rc.d pandora_agent_daemon defaults
|
update-rc.d pandora_agent_daemon defaults
|
||||||
|
@ -114,7 +114,8 @@ my %Conf = (
|
|||||||
'secondary_server_ssl' => 'no',
|
'secondary_server_ssl' => 'no',
|
||||||
'secondary_server_opts' => '',
|
'secondary_server_opts' => '',
|
||||||
'autotime' => 0,
|
'autotime' => 0,
|
||||||
'timezone_offset' => 0
|
'timezone_offset' => 0,
|
||||||
|
'pandora_exec' => 'pandora_exec'
|
||||||
);
|
);
|
||||||
|
|
||||||
# Modules
|
# Modules
|
||||||
@ -228,6 +229,7 @@ sub read_config (;$) {
|
|||||||
'params' => '',
|
'params' => '',
|
||||||
'description' => '',
|
'description' => '',
|
||||||
'interval' => 1,
|
'interval' => 1,
|
||||||
|
'timeout' => 0,
|
||||||
'counter' => 0,
|
'counter' => 0,
|
||||||
'max' => 0,
|
'max' => 0,
|
||||||
'min' => 0,
|
'min' => 0,
|
||||||
@ -275,6 +277,8 @@ sub read_config (;$) {
|
|||||||
|
|
||||||
# Make the module run the first time
|
# Make the module run the first time
|
||||||
$module->{'counter'} = $1;
|
$module->{'counter'} = $1;
|
||||||
|
} elsif ($line =~ /^\s*module_timeout\s+(\d+)\s*$/) {
|
||||||
|
$module->{'timeout'} = $1;
|
||||||
} elsif ($line =~ /^\s*module_end\s*$/) {
|
} elsif ($line =~ /^\s*module_end\s*$/) {
|
||||||
next unless ($module->{'name'} ne '') and ($module->{'func'} != 0);
|
next unless ($module->{'name'} ne '') and ($module->{'func'} != 0);
|
||||||
push (@Modules, $module);
|
push (@Modules, $module);
|
||||||
@ -711,12 +715,17 @@ sub load_parts () {
|
|||||||
################################################################################
|
################################################################################
|
||||||
sub module_exec ($) {
|
sub module_exec ($) {
|
||||||
my $module = shift;
|
my $module = shift;
|
||||||
|
my @data;
|
||||||
|
|
||||||
# Check module parameters
|
# Check module parameters
|
||||||
return () unless ($module->{'params'} ne '');
|
return () unless ($module->{'params'} ne '');
|
||||||
|
|
||||||
# Execute the command
|
# Execute the command
|
||||||
my @data = `$module->{'params'} 2> /dev/null`;
|
if ($module->{'timeout'} == 0) {
|
||||||
|
@data = `$module->{'params'} 2> /dev/null`;
|
||||||
|
} else {
|
||||||
|
@data = `$Conf{'pandora_exec'} $module->{'timeout'} $module->{'params'} 2> /dev/null`;
|
||||||
|
}
|
||||||
|
|
||||||
# Something went wrong or no data
|
# Something went wrong or no data
|
||||||
return () unless ($? eq 0 && defined ($data[0]));
|
return () unless ($? eq 0 && defined ($data[0]));
|
||||||
|
@ -44,6 +44,7 @@ mkdir -p $RPM_BUILD_ROOT/usr/share/man/man1/
|
|||||||
cp -aRf * $RPM_BUILD_ROOT%{prefix}/pandora_agent/
|
cp -aRf * $RPM_BUILD_ROOT%{prefix}/pandora_agent/
|
||||||
cp -aRf $RPM_BUILD_ROOT%{prefix}/pandora_agent/tentacle_client $RPM_BUILD_ROOT/usr/bin/
|
cp -aRf $RPM_BUILD_ROOT%{prefix}/pandora_agent/tentacle_client $RPM_BUILD_ROOT/usr/bin/
|
||||||
cp -aRf $RPM_BUILD_ROOT%{prefix}/pandora_agent/pandora_agent $RPM_BUILD_ROOT/usr/bin/
|
cp -aRf $RPM_BUILD_ROOT%{prefix}/pandora_agent/pandora_agent $RPM_BUILD_ROOT/usr/bin/
|
||||||
|
cp -aRf $RPM_BUILD_ROOT%{prefix}/pandora_agent/pandora_exec $RPM_BUILD_ROOT/usr/bin/
|
||||||
cp -aRf $RPM_BUILD_ROOT%{prefix}/pandora_agent/pandora_agent_daemon $RPM_BUILD_ROOT/etc/init.d/pandora_agent_daemon
|
cp -aRf $RPM_BUILD_ROOT%{prefix}/pandora_agent/pandora_agent_daemon $RPM_BUILD_ROOT/etc/init.d/pandora_agent_daemon
|
||||||
cp -aRf $RPM_BUILD_ROOT%{prefix}/pandora_agent/pandora_agent_daemon $RPM_BUILD_ROOT/etc/init.d/pandora_agent_daemon
|
cp -aRf $RPM_BUILD_ROOT%{prefix}/pandora_agent/pandora_agent_daemon $RPM_BUILD_ROOT/etc/init.d/pandora_agent_daemon
|
||||||
cp -aRf $RPM_BUILD_ROOT%{prefix}/pandora_agent/man/man1/pandora_agent.1.gz $RPM_BUILD_ROOT/usr/share/man/man1/
|
cp -aRf $RPM_BUILD_ROOT%{prefix}/pandora_agent/man/man1/pandora_agent.1.gz $RPM_BUILD_ROOT/usr/share/man/man1/
|
||||||
@ -111,6 +112,7 @@ exit 0
|
|||||||
%files
|
%files
|
||||||
%defattr(750,pandora,root)
|
%defattr(750,pandora,root)
|
||||||
/usr/bin/pandora_agent
|
/usr/bin/pandora_agent
|
||||||
|
/usr/bin/pandora_exec
|
||||||
|
|
||||||
%defattr(770,pandora,root)
|
%defattr(770,pandora,root)
|
||||||
/var/log/pandora/
|
/var/log/pandora/
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
|
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
|
||||||
PANDORA_PATH=/etc/pandora
|
PANDORA_PATH=/etc/pandora
|
||||||
|
PANDORA_USER=root
|
||||||
DAEMON=/usr/bin/pandora_agent
|
DAEMON=/usr/bin/pandora_agent
|
||||||
LOGFILE=/var/log/pandora/pandora_agent.log
|
LOGFILE=/var/log/pandora/pandora_agent.log
|
||||||
|
|
||||||
@ -55,7 +56,12 @@ case "$1" in
|
|||||||
echo "Cannot launch again. Aborting."
|
echo "Cannot launch again. Aborting."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
nohup $DAEMON $PANDORA_PATH 2> $LOGFILE &
|
if [ "$PANDORA_USER" = "root" ]
|
||||||
|
then
|
||||||
|
nohup $DAEMON $PANDORA_PATH 2> $LOGFILE &
|
||||||
|
else
|
||||||
|
sudo -u $PANDORA_USER $DAEMON $PANDORA_PATH >/dev/null 2> $LOGFILE &
|
||||||
|
fi
|
||||||
rm nohup.out 2> /dev/null
|
rm nohup.out 2> /dev/null
|
||||||
sleep 2
|
sleep 2
|
||||||
PANDORA_PID=`pidof_pandora`
|
PANDORA_PID=`pidof_pandora`
|
||||||
|
@ -17,6 +17,7 @@ FORCE=0
|
|||||||
LOG_TIMESTAMP=`date +"%Y/%m/%d %H:%M:%S"`
|
LOG_TIMESTAMP=`date +"%Y/%m/%d %H:%M:%S"`
|
||||||
PANDORA_HOME=/usr/share/pandora_agent
|
PANDORA_HOME=/usr/share/pandora_agent
|
||||||
PANDORA_BIN=/usr/bin/pandora_agent
|
PANDORA_BIN=/usr/bin/pandora_agent
|
||||||
|
PANDORA_EXEC_BIN=/usr/bin/pandora_exec
|
||||||
PANDORA_TEMP=/var/spool/pandora
|
PANDORA_TEMP=/var/spool/pandora
|
||||||
PANDORA_CFG=/etc/pandora
|
PANDORA_CFG=/etc/pandora
|
||||||
PANDORA_LOG_DIR=/var/log/pandora
|
PANDORA_LOG_DIR=/var/log/pandora
|
||||||
@ -26,6 +27,7 @@ PANDORA_MAN=/usr/share/man
|
|||||||
|
|
||||||
MODE=$1
|
MODE=$1
|
||||||
PANDORA_BASE=$2
|
PANDORA_BASE=$2
|
||||||
|
PANDORA_USER=$3
|
||||||
|
|
||||||
# Check for Perl 5.6.x or higher available
|
# Check for Perl 5.6.x or higher available
|
||||||
PERL_VERSION=`perl -v | egrep 'v5.6|v5.7|v5.8|v5.9|v5.1[0-9]' | grep perl`
|
PERL_VERSION=`perl -v | egrep 'v5.6|v5.7|v5.8|v5.9|v5.1[0-9]' | grep perl`
|
||||||
@ -57,24 +59,25 @@ then
|
|||||||
exit 2
|
exit 2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f "pandora_agent" ]
|
help () {
|
||||||
then
|
echo "Syntax":
|
||||||
echo " "
|
echo " "
|
||||||
echo "Execute installer from the directory where you have your files. "
|
echo " ./pandora_agent_installer < --mode > [ destination_path ] [ user_to_run_as ]"
|
||||||
echo "Syntax":
|
|
||||||
echo " "
|
echo " "
|
||||||
echo " ./pandora_agent_install < --mode > [ destination_path ]"
|
echo "Modes:"
|
||||||
echo " "
|
echo " "
|
||||||
|
echo " --force-install To force installation if already installed on system"
|
||||||
|
echo " --install To install Pandora FMS Agent on this system"
|
||||||
|
echo " --uninstall To uninstall/remove Pandora FMS Agent on this System"
|
||||||
|
echo " "
|
||||||
echo "Some exaples of how to use the installer:"
|
echo "Some exaples of how to use the installer:"
|
||||||
echo " "
|
echo " "
|
||||||
echo " cd /tmp/pandora_install "
|
|
||||||
echo " ./pandora_agent_installer --install"
|
echo " ./pandora_agent_installer --install"
|
||||||
echo " ./pandora_agent_installer --install-with-links /var/opt/PandoraFMS"
|
|
||||||
echo " ./pandora_agent_installer --install /opt/pandora"
|
echo " ./pandora_agent_installer --install /opt/pandora"
|
||||||
echo " ./pandora_agent_installer --uninstall /opt/pandora"
|
echo " ./pandora_agent_installer --install \"\" pandora"
|
||||||
|
echo " ./pandora_agent_installer --uninstall /opt/pandora"
|
||||||
echo " "
|
echo " "
|
||||||
exit 1
|
}
|
||||||
fi
|
|
||||||
|
|
||||||
uninstall () {
|
uninstall () {
|
||||||
OS_NAME=`uname -s`
|
OS_NAME=`uname -s`
|
||||||
@ -82,6 +85,7 @@ uninstall () {
|
|||||||
then
|
then
|
||||||
PANDORA_HOME=/usr/local/share/pandora_agent
|
PANDORA_HOME=/usr/local/share/pandora_agent
|
||||||
PANDORA_BIN=/usr/local/bin/pandora_agent
|
PANDORA_BIN=/usr/local/bin/pandora_agent
|
||||||
|
PANDORA_EXEC_BIN=/usr/local/bin/pandora_exec
|
||||||
PANDORA_CFG=/usr/local/etc/pandora
|
PANDORA_CFG=/usr/local/etc/pandora
|
||||||
TENTACLE=/usr/local/bin/tentacle_client
|
TENTACLE=/usr/local/bin/tentacle_client
|
||||||
PANDORA_MAN=/usr/local/man
|
PANDORA_MAN=/usr/local/man
|
||||||
@ -89,6 +93,7 @@ uninstall () {
|
|||||||
|
|
||||||
echo "Removing Pandora FMS Agent..."
|
echo "Removing Pandora FMS Agent..."
|
||||||
rm -Rf $PANDORA_BASE$PANDORA_BIN 2> /dev/null
|
rm -Rf $PANDORA_BASE$PANDORA_BIN 2> /dev/null
|
||||||
|
rm -Rf $PANDORA_BASE$PANDORA_EXEC_BIN 2> /dev/null
|
||||||
|
|
||||||
#Test if exist Pandora Server in this machine
|
#Test if exist Pandora Server in this machine
|
||||||
if [ -d $PANDORA_BASE$PANDORA_TEMP/data_in ]
|
if [ -d $PANDORA_BASE$PANDORA_TEMP/data_in ]
|
||||||
@ -138,6 +143,7 @@ install () {
|
|||||||
then
|
then
|
||||||
PANDORA_HOME=/usr/local/share/pandora_agent
|
PANDORA_HOME=/usr/local/share/pandora_agent
|
||||||
PANDORA_BIN=/usr/local/bin/pandora_agent
|
PANDORA_BIN=/usr/local/bin/pandora_agent
|
||||||
|
PANDORA_EXEC_BIN=/usr/local/bin/pandora_exec
|
||||||
PANDORA_CFG=/usr/local/etc/pandora
|
PANDORA_CFG=/usr/local/etc/pandora
|
||||||
TENTACLE=/usr/local/bin/tentacle_client
|
TENTACLE=/usr/local/bin/tentacle_client
|
||||||
PANDORA_MAN=/usr/local/man
|
PANDORA_MAN=/usr/local/man
|
||||||
@ -186,6 +192,15 @@ install () {
|
|||||||
mkdir -p $PANDORA_BASE$PANDORA_CFG 2> /dev/null
|
mkdir -p $PANDORA_BASE$PANDORA_CFG 2> /dev/null
|
||||||
mkdir -p $PANDORA_BASE$PANDORA_LOG_DIR 2> /dev/null
|
mkdir -p $PANDORA_BASE$PANDORA_LOG_DIR 2> /dev/null
|
||||||
|
|
||||||
|
# Set the user the agent will run as
|
||||||
|
if [ "$PANDORA_USER" != "" ]
|
||||||
|
then
|
||||||
|
sed -e "s/^\s*PANDORA_USER=.*/PANDORA_USER=$PANDORA_USER/" pandora_agent_daemon > pandora_agent_daemon.tmp 2> /dev/null && \
|
||||||
|
mv pandora_agent_daemon.tmp pandora_agent_daemon
|
||||||
|
rm -f pandora_agent_daemon.tmp 2> /dev/null
|
||||||
|
chmod 755 pandora_agent_daemon
|
||||||
|
fi
|
||||||
|
|
||||||
# Create logfile
|
# Create logfile
|
||||||
if [ ! -z "`touch $PANDORA_BASE$PANDORA_LOG_DIR/$PANDORA_LOG`" ]
|
if [ ! -z "`touch $PANDORA_BASE$PANDORA_LOG_DIR/$PANDORA_LOG`" ]
|
||||||
then
|
then
|
||||||
@ -199,11 +214,15 @@ install () {
|
|||||||
echo "Copying Pandora FMS Agent to $PANDORA_BASE$PANDORA_BIN..."
|
echo "Copying Pandora FMS Agent to $PANDORA_BASE$PANDORA_BIN..."
|
||||||
cp pandora_agent $PANDORA_BASE$PANDORA_BIN
|
cp pandora_agent $PANDORA_BASE$PANDORA_BIN
|
||||||
chmod 755 $PANDORA_BASE$PANDORA_BIN
|
chmod 755 $PANDORA_BASE$PANDORA_BIN
|
||||||
|
cp pandora_exec $PANDORA_BASE$PANDORA_EXEC_BIN
|
||||||
|
chmod 755 $PANDORA_BASE$PANDORA_EXEC_BIN
|
||||||
if [ "$OS_NAME" = "FreeBSD" ]
|
if [ "$OS_NAME" = "FreeBSD" ]
|
||||||
then
|
then
|
||||||
chown root:wheel $PANDORA_BASE$PANDORA_BIN
|
chown root:wheel $PANDORA_BASE$PANDORA_BIN
|
||||||
|
chown root:wheel $PANDORA_BASE$PANDORA_EXEC_BIN
|
||||||
else
|
else
|
||||||
chown root:root $PANDORA_BASE$PANDORA_BIN
|
chown root:root $PANDORA_BASE$PANDORA_BIN
|
||||||
|
chown root:root $PANDORA_BASE$PANDORA_EXEC_BIN
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Copying Pandora FMS Agent configuration file to $PANDORA_BASE$PANDORA_CFG/pandora_agent.conf..."
|
echo "Copying Pandora FMS Agent configuration file to $PANDORA_BASE$PANDORA_CFG/pandora_agent.conf..."
|
||||||
@ -303,7 +322,9 @@ install () {
|
|||||||
|
|
||||||
cp $OS_NAME/pandora_agent.conf $PANDORA_BASE$PANDORA_CFG/pandora_agent.conf
|
cp $OS_NAME/pandora_agent.conf $PANDORA_BASE$PANDORA_CFG/pandora_agent.conf
|
||||||
chmod 600 $PANDORA_BASE$PANDORA_CFG/pandora_agent.conf
|
chmod 600 $PANDORA_BASE$PANDORA_CFG/pandora_agent.conf
|
||||||
chown root $PANDORA_BASE$PANDORA_CFG/pandora_agent.conf
|
chown $PANDORA_USER $PANDORA_BASE$PANDORA_CFG/pandora_agent.conf
|
||||||
|
chmod 711 $PANDORA_BASE$PANDORA_LOG_DIR
|
||||||
|
chown $PANDORA_USER $PANDORA_BASE$PANDORA_LOG_DIR/$PANDORA_LOG
|
||||||
|
|
||||||
if [ "$OS_NAME" = "FreeBSD" ]
|
if [ "$OS_NAME" = "FreeBSD" ]
|
||||||
then
|
then
|
||||||
@ -386,27 +407,13 @@ install () {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
help () {
|
if [ ! -f "pandora_agent" ]
|
||||||
echo "Syntax":
|
then
|
||||||
echo " "
|
echo " "
|
||||||
echo " ./pandora_agent_install < --mode > [ destination_path ]"
|
echo "Execute installer from the directory where you have your files. "
|
||||||
echo " "
|
help
|
||||||
echo "Modes:"
|
exit 1
|
||||||
echo " "
|
fi
|
||||||
echo " --force-install To force installation if already installed on system"
|
|
||||||
echo " (Not compatible with --install-with-links "
|
|
||||||
echo " --install To install Pandora FMS Agent on this system"
|
|
||||||
echo " --uninstall To uninstall/remove Pandora FMS Agent on this System"
|
|
||||||
echo " "
|
|
||||||
echo "Some exaples of how to use the installer:"
|
|
||||||
echo " "
|
|
||||||
echo " cd /tmp/pandora_install "
|
|
||||||
echo " ./pandora_agent_installer --install"
|
|
||||||
echo " ./pandora_agent_installer --install /opt/pandora"
|
|
||||||
echo " ./pandora_agent_installer --uninstall /opt/pandora"
|
|
||||||
|
|
||||||
echo " "
|
|
||||||
}
|
|
||||||
|
|
||||||
# Script banner at start
|
# Script banner at start
|
||||||
echo " "
|
echo " "
|
||||||
|
65
pandora_agents/unix/pandora_exec
Executable file
65
pandora_agents/unix/pandora_exec
Executable file
@ -0,0 +1,65 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
##########################################################################
|
||||||
|
# pandora_exec
|
||||||
|
#
|
||||||
|
# Executes the given command and prints its output to stdout. If the
|
||||||
|
# execution times out or the command does not exist nothing is printed
|
||||||
|
# to stdout. This is part of Pandora FMS Plugin server, do not delete!.
|
||||||
|
#
|
||||||
|
# Usage: pandora_exec <timeout in seconds> <command> [arguments]
|
||||||
|
##########################################################################
|
||||||
|
# Copyright (c) 2008 Ramon Novoa, rnovoa@gmail.com
|
||||||
|
# (c) 2008 Artica Soluciones Tecnologicas S.L
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU General Public License
|
||||||
|
# as published by the Free Software Foundation; version 2.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
##########################################################################
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
|
||||||
|
# Check command line parameters
|
||||||
|
if ($#ARGV < 1) {
|
||||||
|
exit 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
my @opts = @ARGV;
|
||||||
|
my $timeout = shift(@opts);
|
||||||
|
my $command = quotemeta(shift(@opts));
|
||||||
|
my $arguments = join(' ', @opts);
|
||||||
|
my $output = '';
|
||||||
|
my $ReturnCode = 0;
|
||||||
|
|
||||||
|
|
||||||
|
# Check that the command exists
|
||||||
|
if (system("$command >/dev/null 2>&1") == 32512) {
|
||||||
|
exit 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Execute the command
|
||||||
|
eval {
|
||||||
|
local $SIG{ALRM} = sub { die "alarm\n" };
|
||||||
|
alarm $timeout;
|
||||||
|
|
||||||
|
$output = `$command $arguments`;
|
||||||
|
$ReturnCode = ($? >> 8) & 0xff;
|
||||||
|
alarm 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Timeout
|
||||||
|
if ($@ eq "alarm\n") {
|
||||||
|
exit 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
print $output;
|
||||||
|
|
||||||
|
exit $ReturnCode;
|
Loading…
x
Reference in New Issue
Block a user