Update to 2.0. Also new installer
git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@919 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
This commit is contained in:
parent
3cfd862d48
commit
1c34acfdce
|
@ -1,2 +1,3 @@
|
||||||
Sancho Lerena <slerena@gmail.com>
|
Sancho Lerena <slerena@gmail.com>
|
||||||
|
Manuel Arostegui <manuel.arostegui@artica.es>
|
||||||
Evi Vanoost <vanooste@rcbi.rochester.edu>
|
Evi Vanoost <vanooste@rcbi.rochester.edu>
|
||||||
|
|
|
@ -1,66 +1,24 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# **********************************************************************
|
# **********************************************************************
|
||||||
# Pandora FMS Generic Host Agent
|
# Pandora FMS Generic Host Agent
|
||||||
# macOS version 1.3.1
|
# GNU/Linux version 2.0
|
||||||
# (c) 2003-2008 Sancho Lerena <slerena@gmail.com>
|
# (c) 2003-2008 Sancho Lerena <slerena@gmail.com>
|
||||||
# (c) 2007-2008 Evi Vanoost <vanooste@rcbi.rochester.edu>
|
|
||||||
# with the help of many people. Please see http://pandora.sourceforge.net
|
# with the help of many people. Please see http://pandora.sourceforge.net
|
||||||
# This code is licensed under GPL 2.0 license.
|
# This code is licensed under GPL 2.0 license.
|
||||||
# **********************************************************************
|
# **********************************************************************
|
||||||
|
|
||||||
AGENT_VERSION=1.3.1
|
AGENT_VERSION=2.0
|
||||||
AGENT_BUILD=080111
|
AGENT_BUILD=080619
|
||||||
|
|
||||||
if [ -z "$1" ]
|
# **********************************************************************
|
||||||
then
|
# function configure_agent()
|
||||||
echo " "
|
# Parses the configuration file and configures the agent.
|
||||||
echo "Fatal error: I need an argument to Pandora FMS Agent config directory"
|
# **********************************************************************
|
||||||
echo " "
|
function configure_agent {
|
||||||
echo " example: pandora_agent /etc/pandora "
|
|
||||||
echo " "
|
|
||||||
exit -1
|
|
||||||
else
|
|
||||||
PANDORA_HOME=$1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -f $PANDORA_HOME/pandora_agent.conf ]
|
# Read config file
|
||||||
then
|
for a in `cat $PANDORA_HOME/pandora_agent.conf | grep -v -e "^#" | grep -v -e "^module"`
|
||||||
echo " "
|
do
|
||||||
echo "FATAL ERROR: Cannot load $PANDORA_HOME/pandora_agent.conf"
|
|
||||||
echo " "
|
|
||||||
exit -1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Init internal variables
|
|
||||||
CONTADOR=0
|
|
||||||
EXECUTE=1
|
|
||||||
MODULE_END=0
|
|
||||||
TIMESTAMP=`date +"%Y/%m/%d %H:%M:%S"`
|
|
||||||
IFS=$'\n'
|
|
||||||
|
|
||||||
# Default values
|
|
||||||
CHECKSUM_MODE=1
|
|
||||||
DEBUG_MODE=0
|
|
||||||
DELAYED_STARTUP=0
|
|
||||||
SERVER_PORT=22
|
|
||||||
PANDORA_NICE=0
|
|
||||||
INTERVAL=300
|
|
||||||
TRANSFER_MODE=ssh
|
|
||||||
if [ -z "`echo $LANG | grep '\.'`" ]
|
|
||||||
then
|
|
||||||
ENCODING="iso-8859-1"
|
|
||||||
else
|
|
||||||
ENCODING=`echo $LANG | cut -f 2 -d "."`
|
|
||||||
fi
|
|
||||||
|
|
||||||
NOMBRE_HOST=`/bin/hostname`
|
|
||||||
OS_NAME=`uname -s`
|
|
||||||
PANDORA_LOGFILE=/var/log/pandora/pandora_agent.log
|
|
||||||
TEMP=/tmp
|
|
||||||
|
|
||||||
# Read config file
|
|
||||||
for a in `cat $PANDORA_HOME/pandora_agent.conf | grep -v -e "^#" | grep -v -e "^module" `
|
|
||||||
do
|
|
||||||
a=`echo $a | tr -s " " " "`
|
a=`echo $a | tr -s " " " "`
|
||||||
# Get general configuration parameters from config file
|
# Get general configuration parameters from config file
|
||||||
if [ ! -z "`echo $a | grep -e '^logfile'`" ]
|
if [ ! -z "`echo $a | grep -e '^logfile'`" ]
|
||||||
|
@ -98,11 +56,7 @@ do
|
||||||
DEBUG_MODE=`echo $a | awk '{ print $2 }' `
|
DEBUG_MODE=`echo $a | awk '{ print $2 }' `
|
||||||
echo "$TIMESTAMP - [SETUP] - Debug mode is $DEBUG_MODE " >> $PANDORA_LOGFILE
|
echo "$TIMESTAMP - [SETUP] - Debug mode is $DEBUG_MODE " >> $PANDORA_LOGFILE
|
||||||
fi
|
fi
|
||||||
if [ ! -z "`echo $a | grep -e '^checksum'`" ]
|
|
||||||
then
|
|
||||||
CHECKSUM_MODE=`echo $a | awk '{ print $2 }' `
|
|
||||||
echo "$TIMESTAMP - [SETUP] - Checksum is $CHECKSUM_MODE " >> $PANDORA_LOGFILE
|
|
||||||
fi
|
|
||||||
# Contribution of daggett
|
# Contribution of daggett
|
||||||
if [ ! -z "`echo $a | grep -e '^server_port'`" ]
|
if [ ! -z "`echo $a | grep -e '^server_port'`" ]
|
||||||
then
|
then
|
||||||
|
@ -138,7 +92,7 @@ do
|
||||||
if [ ! -z "$SERVER_PWD" ]
|
if [ ! -z "$SERVER_PWD" ]
|
||||||
then
|
then
|
||||||
TENTACLE_OPTS="-x $SERVER_PWD $TENTACLE_OPTS"
|
TENTACLE_OPTS="-x $SERVER_PWD $TENTACLE_OPTS"
|
||||||
echo "$TIMESTAMP - [SETUP] - Tentacle server password set" >> $PANDORA_LOGFILE
|
echo "$TIMESTAMP - [SETUP] - Server password set (FTP/Tentacle)" >> $PANDORA_LOGFILE
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if [ ! -z "`echo $a | grep -e '^server_ssl'`" ]
|
if [ ! -z "`echo $a | grep -e '^server_ssl'`" ]
|
||||||
|
@ -150,20 +104,296 @@ do
|
||||||
echo "$TIMESTAMP - [SETUP] - OpenSSL enabled for Tentacle" >> $PANDORA_LOGFILE
|
echo "$TIMESTAMP - [SETUP] - OpenSSL enabled for Tentacle" >> $PANDORA_LOGFILE
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
if [ ! -z "`echo $a | grep -e '^cron_mode'`" ]
|
||||||
|
then
|
||||||
|
CRON_MODE=1
|
||||||
|
echo "$TIMESTAMP - [SETUP] - Cronmode enabled" >> $PANDORA_LOGFILE
|
||||||
|
fi
|
||||||
if [ ! -z "`echo $a | grep -e '^server_opts'`" ]
|
if [ ! -z "`echo $a | grep -e '^server_opts'`" ]
|
||||||
then
|
then
|
||||||
SERVER_OPTS=`echo $a | awk -F'"' '{ print $2 }' `
|
SERVER_OPTS=`echo $a | cut -d" " -f2-`
|
||||||
if [ ! -z "$SERVER_OPTS" ]
|
if [ ! -z "$SERVER_OPTS" ]
|
||||||
then
|
then
|
||||||
TENTACLE_OPTS="$SERVER_OPTS $TENTACLE_OPTS"
|
TENTACLE_OPTS="$SERVER_OPTS $TENTACLE_OPTS"
|
||||||
echo "$TIMESTAMP - [SETUP] - Extra options for the Tentacle client $SERVER_OPTS" >> $PANDORA_LOGFILE
|
echo "$TIMESTAMP - [SETUP] - Extra options for the Tentacle client $SERVER_OPTS" >> $PANDORA_LOGFILE
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
# Remote configuration
|
||||||
|
if [ ! -z "`echo $a | grep -e '^remote_config'`" ]
|
||||||
|
then
|
||||||
|
REMOTE_CONFIG=`echo $a | awk '{ print $2 }'`
|
||||||
|
if [ "$REMOTE_CONFIG" == "1" ]
|
||||||
|
then
|
||||||
|
echo "$TIMESTAMP - [SETUP] - Remote configuration enabled" >> $PANDORA_LOGFILE
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$CRON_MODE" == "0" ]
|
||||||
|
then
|
||||||
|
# Script banner at start
|
||||||
|
echo "Pandora FMS Agent $AGENT_VERSION (c) Sancho Lerena 2003-2008"
|
||||||
|
echo "This program is licensed under GPL2 Terms. http://pandora.sf.net"
|
||||||
|
echo "Running in $NOMBRE_HOST at $TIMESTAMP"
|
||||||
|
echo " "
|
||||||
|
else
|
||||||
|
# Checks if there is another instance running
|
||||||
|
PID_RUNNING=`pidof -x pandora_agent`
|
||||||
|
PID_ME=$$
|
||||||
|
if [ "$PID_ME" != "$PID_RUNNING" ]
|
||||||
|
then
|
||||||
|
echo "Aborting execution. Another instance of Pandora FMS running"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# Get Distro type and version
|
# Make some checks
|
||||||
if [ $OS_NAME = "Darwin" ]
|
|
||||||
|
if [ "$DEBUG_MODE" == "1" ]
|
||||||
|
then
|
||||||
|
echo "(**) Warning: Running in DEBUG mode"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $DELAYED_STARTUP != 0 ]
|
||||||
|
then
|
||||||
|
echo "Delayed startup in $DELAYED_STARTUP minutes "
|
||||||
|
echo "Delayed startup in $DELAYED_STARTUP minutes" > $PANDORA_LOGFILE.err
|
||||||
|
echo " "
|
||||||
|
sleep $(($DELAYED_STARTUP*60))
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Renice me
|
||||||
|
renice $PANDORA_NICE $$ 2> /dev/null > /dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
# **********************************************************************
|
||||||
|
# function send_file(file)
|
||||||
|
# Sends a file to the server.
|
||||||
|
# **********************************************************************
|
||||||
|
function send_file {
|
||||||
|
FILE="$1"
|
||||||
|
|
||||||
|
if [ "$TRANSFER_MODE" == "tentacle" ]
|
||||||
|
then
|
||||||
|
eval tentacle_client -v -a $SERVER_IP -p $SERVER_PORT $TENTACLE_OPTS $FILE > /dev/null 2> $PANDORA_LOGFILE.err
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$TRANSFER_MODE" == "ssh" ]
|
||||||
|
then
|
||||||
|
scp -P $SERVER_PORT $FILE pandora@$SERVER_IP:$SERVER_PATH > /dev/null 2> $PANDORA_LOGFILE.err
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$TRANSFER_MODE" == "ftp" ]
|
||||||
|
then
|
||||||
|
BASENAME=`basename $FILE`
|
||||||
|
DIRNAME=`dirname $FILE`
|
||||||
|
|
||||||
|
ftp -n $SERVER_IP $SERVER_PORT > /dev/null 2> $PANDORA_LOGFILE.err <<FEOF1
|
||||||
|
quote USER pandora
|
||||||
|
quote PASS $SERVER_PWD
|
||||||
|
lcd "$DIRNAME"
|
||||||
|
cd "$SERVER_PATH"
|
||||||
|
put "$BASENAME"
|
||||||
|
quit
|
||||||
|
FEOF1
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$TRANSFER_MODE" == "local" ]
|
||||||
|
then
|
||||||
|
cp $FILE $SERVER_PATH > /dev/null 2> $PANDORA_LOGFILE.err
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# **********************************************************************
|
||||||
|
# function recv_file(file)
|
||||||
|
# Gets a file from the server and saves it under $TEMP. Paths are not
|
||||||
|
# allowed.
|
||||||
|
# **********************************************************************
|
||||||
|
function recv_file {
|
||||||
|
FILE="$1"
|
||||||
|
|
||||||
|
if [ "$TRANSFER_MODE" == "tentacle" ]
|
||||||
|
then
|
||||||
|
WD=`pwd`
|
||||||
|
cd $TEMP
|
||||||
|
eval tentacle_client -v -g -a $SERVER_IP -p $SERVER_PORT $TENTACLE_OPTS $FILE > /dev/null 2> $PANDORA_LOGFILE.err
|
||||||
|
STATUS=$?
|
||||||
|
cd $WD
|
||||||
|
return $STATUS
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$TRANSFER_MODE" == "ssh" ]
|
||||||
|
then
|
||||||
|
scp -P $SERVER_PORT pandora@$SERVER_IP:$SERVER_PATH/$FILE $TEMP > /dev/null 2> $PANDORA_LOGFILE.err
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$TRANSFER_MODE" == "ftp" ]
|
||||||
|
then
|
||||||
|
ftp -n $SERVER_IP $SERVER_PORT > /dev/null 2> $PANDORA_LOGFILE.err <<FEOF1
|
||||||
|
quote USER pandora
|
||||||
|
quote PASS $SERVER_PWD
|
||||||
|
lcd "$TEMP"
|
||||||
|
cd "$SERVER_PATH"
|
||||||
|
get "$FILE"
|
||||||
|
quit
|
||||||
|
FEOF1
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$TRANSFER_MODE" == "local" ]
|
||||||
|
then
|
||||||
|
cp $SERVER_PATH/$FILE $TEMP > /dev/null 2> $PANDORA_LOGFILE.err
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# **********************************************************************
|
||||||
|
# function check_remote_config()
|
||||||
|
# Checks for a newer remote configuration file.
|
||||||
|
# **********************************************************************
|
||||||
|
function check_remote_config {
|
||||||
|
|
||||||
|
if [ "$REMOTE_CONFIG" != "1" ]
|
||||||
|
then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Disabled in DEBUG mode
|
||||||
|
if [ "$DEBUG_MODE" == "1" ]
|
||||||
|
then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Agent name md5sum
|
||||||
|
AGENT_MD5=`echo -n $NOMBRE_HOST | md5sum | cut -d" " -f1`
|
||||||
|
CONFIG_FILE="$AGENT_MD5.conf"
|
||||||
|
MD5_FILE="$AGENT_MD5.md5"
|
||||||
|
|
||||||
|
# Local config file md5sum
|
||||||
|
CONFIG_MD5=`md5sum $PANDORA_HOME/pandora_agent.conf | cut -d" " -f1`
|
||||||
|
|
||||||
|
# Get remote config file md5sum
|
||||||
|
recv_file "$MD5_FILE"
|
||||||
|
|
||||||
|
# Configuration has not been uploaded to the server
|
||||||
|
if [ $? != 0 ]
|
||||||
|
then
|
||||||
|
echo "$TIMESTAMP - Uploading configuration for the first time" >> $PANDORA_LOGFILE
|
||||||
|
cp "$PANDORA_HOME/pandora_agent.conf" "$TEMP/$CONFIG_FILE"
|
||||||
|
echo "$CONFIG_MD5" > "$TEMP/$MD5_FILE"
|
||||||
|
send_file "$TEMP/$CONFIG_FILE"
|
||||||
|
send_file "$TEMP/$MD5_FILE"
|
||||||
|
rm -f "$TEMP/$CONFIG_FILE"
|
||||||
|
rm -f "$TEMP/$MD5_FILE"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check for configuration changes
|
||||||
|
REMOTE_MD5=`cat $TEMP/$MD5_FILE`
|
||||||
|
rm -f "$TEMP/$MD5_FILE"
|
||||||
|
if [ "$REMOTE_MD5" == "$CONFIG_MD5" ]
|
||||||
|
then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$TIMESTAMP - Configuration has changed" >> $PANDORA_LOGFILE
|
||||||
|
recv_file "$CONFIG_FILE"
|
||||||
|
|
||||||
|
if [ $? != 0 ]
|
||||||
|
then
|
||||||
|
echo "$TIMESTAMP - Error retrieving configuration file" > $PANDORA_LOGFILE.err
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
mv "$TEMP/$CONFIG_FILE" "$PANDORA_HOME/pandora_agent.conf"
|
||||||
|
|
||||||
|
# Reload configuration
|
||||||
|
configure_agent
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# **********************************************************************
|
||||||
|
# Main
|
||||||
|
# **********************************************************************
|
||||||
|
|
||||||
|
if [ -z "$1" ]
|
||||||
|
then
|
||||||
|
echo " "
|
||||||
|
echo "Fatal error: I need an argument to Pandora FMS Agent config directory"
|
||||||
|
echo " "
|
||||||
|
echo " example: pandora_agent /etc/pandora "
|
||||||
|
echo " "
|
||||||
|
exit -1
|
||||||
|
else
|
||||||
|
PANDORA_HOME=$1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f $PANDORA_HOME/pandora_agent.conf ]
|
||||||
|
then
|
||||||
|
echo " "
|
||||||
|
echo "FATAL ERROR: Cannot load $PANDORA_HOME/pandora_agent.conf"
|
||||||
|
echo " "
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Init internal variables
|
||||||
|
CONTADOR=0
|
||||||
|
EXECUTE=1
|
||||||
|
MODULE_END=0
|
||||||
|
TIMESTAMP=`date +"%Y/%m/%d %H:%M:%S"`
|
||||||
|
IFS=$'\n'
|
||||||
|
|
||||||
|
# Default values
|
||||||
|
DEBUG_MODE=0
|
||||||
|
DELAYED_STARTUP=0
|
||||||
|
SERVER_PORT=22
|
||||||
|
PANDORA_NICE=0
|
||||||
|
INTERVAL=300
|
||||||
|
TRANSFER_MODE=ssh
|
||||||
|
CRON_MODE=0
|
||||||
|
if [ -z "`echo $LANG | grep '\.'`" ]
|
||||||
|
then
|
||||||
|
ENCODING="iso-8859-1"
|
||||||
|
else
|
||||||
|
ENCODING=`echo $LANG | cut -f 2 -d "."`
|
||||||
|
fi
|
||||||
|
|
||||||
|
NOMBRE_HOST=`/bin/hostname`
|
||||||
|
OS_NAME=`uname -s`
|
||||||
|
PANDORA_LOGFILE=/var/log/pandora/pandora_agent.log
|
||||||
|
TEMP=/tmp
|
||||||
|
|
||||||
|
# Get Linux Distro type and version
|
||||||
|
if [ -f "/etc/SuSE-release" ]
|
||||||
|
then
|
||||||
|
OS_VERSION=`cat /etc/SuSE-release | grep VERSION | cut -f 3 -d " "`
|
||||||
|
LINUX_DISTRO=SUSE
|
||||||
|
elif [ -f "/etc/lsb-release" ]
|
||||||
|
then
|
||||||
|
OS_VERSION=`cat /etc/lsb-release | grep DISTRIB_RELEASE | cut -f 2 -d "="`
|
||||||
|
LINUX_DISTRO=UBUNTU
|
||||||
|
OS_VERSION="UBUNTU $OS_VERSION"
|
||||||
|
elif [ -f "/etc/debian_version" ]
|
||||||
|
then
|
||||||
|
OS_VERSION=`cat /etc/debian_version`
|
||||||
|
OS_VERSION="DEBIAN $OS_VERSION"
|
||||||
|
LINUX_DISTRO=DEBIAN
|
||||||
|
elif [ -f "/etc/fedora-release" ]
|
||||||
|
then
|
||||||
|
OS_VERSION=`cat /etc/fedora-release | cut -f 4 -d " "`
|
||||||
|
OS_VERSION="FEDORA $OS_VERSION"
|
||||||
|
LINUX_DISTRO=FEDORA
|
||||||
|
elif [ $OS_NAME = "Darwin" ]
|
||||||
then
|
then
|
||||||
LINUX_DISTRO="Mac OS X"
|
LINUX_DISTRO="Mac OS X"
|
||||||
OS_VERSION=`sw_vers | awk 'NR==2 {print $2}'`
|
OS_VERSION=`sw_vers | awk 'NR==2 {print $2}'`
|
||||||
|
@ -172,49 +402,19 @@ else
|
||||||
OS_VERSION=`uname -r`
|
OS_VERSION=`uname -r`
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Configure this agent
|
||||||
# Script banner at start
|
configure_agent
|
||||||
echo "Pandora FMS Agent $AGENT_VERSION (c) Sancho Lerena 2004-2008"
|
|
||||||
echo "This program is licensed under GPL2 Terms. http://pandora.sf.net"
|
|
||||||
echo "Running in $NOMBRE_HOST at $TIMESTAMP"
|
|
||||||
echo " "
|
|
||||||
|
|
||||||
|
|
||||||
# Make some checks
|
|
||||||
if [ "$TRANSFER_MODE" == "ftp" ]
|
|
||||||
then
|
|
||||||
if [ ! -f $HOME/.netrc ]
|
|
||||||
then
|
|
||||||
echo "(EE) Transfer mode is FTP but there is no usable .netrc file. Aborting."
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$DEBUG_MODE" == "1" ]
|
|
||||||
then
|
|
||||||
echo "(**) Warning: Running in DEBUG mode"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $DELAYED_STARTUP != 0 ]
|
|
||||||
then
|
|
||||||
echo "Delayed startup in $DELAYED_STARTUP minutes "
|
|
||||||
echo "Delayed startup in $DELAYED_STARTUP minutes" >> $PANDORA_LOGFILE.err
|
|
||||||
echo " "
|
|
||||||
sleep $(($DELAYED_STARTUP*60))
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Renice me
|
|
||||||
if [ "$PANDORA_NICE" != "0" ]
|
|
||||||
then
|
|
||||||
renice $PANDORA_NICE $$ 2> /dev/null > /dev/null
|
|
||||||
fi
|
|
||||||
|
|
||||||
# MAIN Program loop begin
|
# MAIN Program loop begin
|
||||||
|
|
||||||
while [ "1" == "1" ]
|
while [ "1" == "1" ]
|
||||||
do
|
do
|
||||||
# Deleted debug / error info on each run to avoid giant logs
|
# Deleted debug / error info on each run to avoid giant logs
|
||||||
rm -Rf $PANDORA_LOGFILE.err 2> /dev/null
|
rm -Rf $PANDORA_LOGFILE.err 2> /dev/null
|
||||||
|
|
||||||
|
# Check for configuration changes if remote_config is enabled
|
||||||
|
check_remote_config
|
||||||
|
|
||||||
# Date and time, SERIAL is number of seconds since 1/1/1970, for every packet.
|
# Date and time, SERIAL is number of seconds since 1/1/1970, for every packet.
|
||||||
TIMESTAMP=`date +"%Y/%m/%d %H:%M:%S"`
|
TIMESTAMP=`date +"%Y/%m/%d %H:%M:%S"`
|
||||||
SERIAL=`date +"%s"`
|
SERIAL=`date +"%s"`
|
||||||
|
@ -222,8 +422,6 @@ do
|
||||||
# File names
|
# File names
|
||||||
DATA=$TEMP/$NOMBRE_HOST.$SERIAL.data
|
DATA=$TEMP/$NOMBRE_HOST.$SERIAL.data
|
||||||
DATA2=$TEMP/$NOMBRE_HOST.$SERIAL.data_temp
|
DATA2=$TEMP/$NOMBRE_HOST.$SERIAL.data_temp
|
||||||
CHECKSUM=$TEMP/$NOMBRE_HOST.$SERIAL.checksum
|
|
||||||
PANDORA_FILES="$TEMP/$NOMBRE_HOST.$SERIAL.*"
|
|
||||||
|
|
||||||
# Makes data packet
|
# Makes data packet
|
||||||
echo "<?xml version=\"1.0\" encoding=\"$ENCODING\"?> " > $DATA
|
echo "<?xml version=\"1.0\" encoding=\"$ENCODING\"?> " > $DATA
|
||||||
|
@ -305,6 +503,19 @@ do
|
||||||
EXECUTE=`expr \( $CONTADOR + 1 \) % $MODULEINTERVAL`
|
EXECUTE=`expr \( $CONTADOR + 1 \) % $MODULEINTERVAL`
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Plugin execution
|
||||||
|
if [ ! -z "`echo $a | grep '^module_plugin'`" ]
|
||||||
|
then
|
||||||
|
PLUGIN=`echo $a | cut -d" " -f2`
|
||||||
|
PARAMS=`echo $a | cut -d" " -f3-`
|
||||||
|
if [ -f $PANDORA_HOME/plugins/$PLUGIN ]
|
||||||
|
then
|
||||||
|
eval $PANDORA_HOME/plugins/$PLUGIN $PARAMS >> $DATA
|
||||||
|
else
|
||||||
|
echo "$TIMESTAMP - Plugin $PANDORA_HOME/plugins/$PLUGIN not found" > $PANDORA_LOGFILE.err
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# If module ends, and execute for this module is enabled
|
# If module ends, and execute for this module is enabled
|
||||||
# then write
|
# then write
|
||||||
|
|
||||||
|
@ -326,23 +537,6 @@ do
|
||||||
CONTADOR=0
|
CONTADOR=0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Call for user-defined script for data adquisition
|
|
||||||
if [ -f "$PANDORA_HOME/pandora_user.conf" ]
|
|
||||||
then
|
|
||||||
/bin/bash $PANDORA_HOME/pandora_user.conf >> $DATA
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Checking MD5
|
|
||||||
if [ "$CHECKSUM_MODE" == "1" ]
|
|
||||||
then
|
|
||||||
# Calculate Checksum and prepare MD5 file
|
|
||||||
CHECKSUM_DATA=`md5sum $DATA`
|
|
||||||
echo $CHECKSUM_DATA > $CHECKSUM
|
|
||||||
else
|
|
||||||
CHECKSUM_DATA="No valid checksum"
|
|
||||||
echo $CHECKSUM_DATA > $CHECKSUM
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Finish data packet
|
# Finish data packet
|
||||||
echo "</agent_data>" >> $DATA
|
echo "</agent_data>" >> $DATA
|
||||||
echo "" >> $DATA
|
echo "" >> $DATA
|
||||||
|
@ -361,28 +555,16 @@ do
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Send packets to server and delete it
|
# Send packets to server and delete it
|
||||||
if [ "$TRANSFER_MODE" == "tentacle" ]
|
send_file $DATA
|
||||||
then
|
|
||||||
eval tentacle_client -v -a $SERVER_IP -p $SERVER_PORT $TENTACLE_OPTS $PANDORA_FILES > /dev/null 2> $PANDORA_LOGFILE.err
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$TRANSFER_MODE" == "ssh" ]
|
|
||||||
then
|
|
||||||
scp -P $SERVER_PORT $PANDORA_FILES pandora@$SERVER_IP:$SERVER_PATH > /dev/null 2> $PANDORA_LOGFILE.err
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$TRANSFER_MODE" == "ftp" ]
|
|
||||||
then
|
|
||||||
ftp $SERVER_IP > /dev/null 2> $PANDORA_LOGFILE.err
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$TRANSFER_MODE" == "local" ]
|
|
||||||
then
|
|
||||||
cp $PANDORA_FILES $SERVER_PATH > /dev/null 2> $PANDORA_LOGFILE.err
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Delete data
|
# Delete data
|
||||||
rm -f $PANDORA_FILES> /dev/null 2> $PANDORA_LOGFILE.err
|
rm -f $DATA > /dev/null 2> $PANDORA_LOGFILE.err
|
||||||
|
|
||||||
|
# Cron mode
|
||||||
|
if [ "$CRON_MODE" == "1" ]
|
||||||
|
then
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
# Go to bed :-)
|
# Go to bed :-)
|
||||||
sleep $INTERVAL
|
sleep $INTERVAL
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
# Base config file for Pandora FMS agents
|
# Base config file for Pandora FMS agents
|
||||||
# Version 1.2
|
# Version 2.0
|
||||||
# Licensed under GPL license v2,
|
# Licensed under GPL license v2,
|
||||||
# (c) 2003-2007 Sancho Lerena and others.
|
# (c) 2003-2008 Artica Soluciones Tecnologicas
|
||||||
|
# (c) 2003-2008 Sancho Lerena <slerena@gmail.com>
|
||||||
# please visit http://pandora.sourceforge.net
|
# please visit http://pandora.sourceforge.net
|
||||||
|
|
||||||
# General Parameters
|
# General Parameters
|
||||||
# ==================
|
# ==================
|
||||||
|
|
||||||
server_ip skull
|
server_ip localhost
|
||||||
server_path /var/spool/pandora/data_in
|
server_path /var/spool/pandora/data_in
|
||||||
temporal /var/spool/pandora/data_out
|
temporal /var/spool/pandora/data_out
|
||||||
logfile /var/log/pandora/pandora_agent.log
|
logfile /var/log/pandora/pandora_agent.log
|
||||||
|
@ -17,10 +18,7 @@ interval 300
|
||||||
|
|
||||||
# Debug mode only generate XML, and stop after first execution,
|
# Debug mode only generate XML, and stop after first execution,
|
||||||
# and does not copy XML to server.
|
# and does not copy XML to server.
|
||||||
debug 0
|
debug 1
|
||||||
|
|
||||||
# By default is activated
|
|
||||||
checksum 0
|
|
||||||
|
|
||||||
# By default, agent takes machine name
|
# By default, agent takes machine name
|
||||||
#agent_name adama
|
#agent_name adama
|
||||||
|
@ -28,29 +26,46 @@ checksum 0
|
||||||
# By default agent try to take default encoding defined in host.
|
# By default agent try to take default encoding defined in host.
|
||||||
# encoding iso-8859-15
|
# encoding iso-8859-15
|
||||||
|
|
||||||
# By default is 22 (for ssh)
|
# Listening TCP port for remote server. By default is 41121 (for tentacle)
|
||||||
#server_port 22
|
# if you want to use SSH use 22, and FTP uses 21.
|
||||||
|
server_port 41121
|
||||||
|
|
||||||
# ftp, ssh or local
|
# Transfer mode: tentacle, ftp, ssh or local
|
||||||
transfer_mode ssh
|
transfer_mode tentacle
|
||||||
|
|
||||||
|
# Server password (Tentacle or FTP). Leave empty for no password (default).
|
||||||
|
# server_pwd mypassword
|
||||||
|
|
||||||
|
# Set to yes/no to enable/disable OpenSSL support for Tentacle (disabled by default).
|
||||||
|
# server_ssl no
|
||||||
|
|
||||||
|
# Extra options for the Tentacle client (for example, server_opts "-v -r 5").
|
||||||
|
# server_opts
|
||||||
|
|
||||||
# delayed_startup defines number of MINUTES before start execution
|
# delayed_startup defines number of MINUTES before start execution
|
||||||
# for first time when startup Pandora Agent
|
# for first time when startup Pandora FMS Agent
|
||||||
|
# delayed_startup 10
|
||||||
|
|
||||||
#delayed_startup 90
|
# Pandora nice defines priority of execution. Less priority means more intensive execution
|
||||||
|
# A recommended value is 10. 0 priority means no Pandora CPU protection enabled (default)
|
||||||
|
# pandora_nice 0
|
||||||
|
|
||||||
#Pandora nice defines priority of execution. Less priority means more intensive execution
|
# Cron mode replace Pandora FMS own task schedule each XX interval seconds by the use
|
||||||
#A recommended value is 10. 0 priority means no Pandora CPU protection enabled
|
# of old style cron. You should add to crontab Pandora FMS agent script to use this mode.
|
||||||
#pandora_nice 0
|
# This is disabled by default, and is not recommended. Use Pandora FMS internal scheduler
|
||||||
|
# is much more safe.
|
||||||
|
# cron_mode
|
||||||
|
|
||||||
|
# If set to 1 allows the agent to be configured via the web console.
|
||||||
|
# remote_config 0
|
||||||
|
|
||||||
# Module Definition
|
# Module Definition
|
||||||
# =================
|
# =================
|
||||||
|
|
||||||
# System information
|
# System information for clients
|
||||||
|
|
||||||
module_begin
|
module_begin
|
||||||
module_name cpu_user
|
module_name CPU (User)
|
||||||
module_type generic_data
|
module_type generic_data
|
||||||
module_interval 1
|
module_interval 1
|
||||||
module_exec iostat -C | tail -1 | awk '{ print $10 }'
|
module_exec iostat -C | tail -1 | awk '{ print $10 }'
|
||||||
|
@ -60,7 +75,7 @@ module_descripcion User CPU Usage (%)
|
||||||
module_end
|
module_end
|
||||||
|
|
||||||
module_begin
|
module_begin
|
||||||
module_name cpu_sys
|
module_name CPU (System)
|
||||||
module_type generic_data
|
module_type generic_data
|
||||||
module_exec iostat -C | tail -1 | awk '{ print $11 }'
|
module_exec iostat -C | tail -1 | awk '{ print $11 }'
|
||||||
module_max 100
|
module_max 100
|
||||||
|
@ -69,7 +84,7 @@ module_description System CPU Usage (%)
|
||||||
module_end
|
module_end
|
||||||
|
|
||||||
module_begin
|
module_begin
|
||||||
module_name disk_root_free
|
module_name Disk Space on / (Available)
|
||||||
module_type generic_data
|
module_type generic_data
|
||||||
module_exec df -kh / | tail -1 | awk '{ print 100-$5 }'
|
module_exec df -kh / | tail -1 | awk '{ print 100-$5 }'
|
||||||
module_max 100
|
module_max 100
|
||||||
|
@ -78,37 +93,39 @@ module_description Free disk Percentage of root partition
|
||||||
module_end
|
module_end
|
||||||
|
|
||||||
module_begin
|
module_begin
|
||||||
module_name memused
|
module_name Physical Memory (Total)
|
||||||
module_type generic_data
|
module_type generic_data
|
||||||
module_exec sysctl -n hw.physmem
|
module_exec sysctl -n hw.memsize
|
||||||
|
module_description Used Physical Memory
|
||||||
module_end
|
module_end
|
||||||
|
|
||||||
module_begin
|
module_begin
|
||||||
module_name memfree
|
module_name Physical Memory (Used)
|
||||||
module_type generic_data
|
module_type generic_data
|
||||||
module_exec echo `sysctl -n hw.memsize` - `sysctl -n hw.physmem` | bc
|
module_exec top -l 1 | grep PhysMem | awk '{gsub("M","",$8)} {print $8}'
|
||||||
|
module_description Used Physical Memory
|
||||||
module_end
|
module_end
|
||||||
|
|
||||||
module_begin
|
module_begin
|
||||||
module_name proctotal
|
module_name Processes Total
|
||||||
module_type generic_data
|
module_type generic_data
|
||||||
module_exec ps -A | wc -l
|
module_exec ps -A | wc -l
|
||||||
module_description Total Processes
|
module_description Total Number of Processes
|
||||||
module_end
|
module_end
|
||||||
|
|
||||||
# Hardware information
|
# Hardware information
|
||||||
|
|
||||||
module_begin
|
module_begin
|
||||||
module_name numprocs
|
module_name CPUs (Number)
|
||||||
module_type generic_data
|
module_type generic_data
|
||||||
module_exec system_profiler -detailLevel mini | grep -i "Number of CPUs:" | awk '{ print $4}'
|
module_exec sysctl -n hw.ncpu
|
||||||
module_max 8
|
module_max 8
|
||||||
module_min 0
|
module_min 1
|
||||||
module_description Number of Processors
|
module_description Number of Processors
|
||||||
module_end
|
module_end
|
||||||
|
|
||||||
module_begin
|
module_begin
|
||||||
module_name arch
|
module_name Architecture
|
||||||
module_type generic_data_string
|
module_type generic_data_string
|
||||||
module_exec arch
|
module_exec arch
|
||||||
module_description Architecture
|
module_description Architecture
|
||||||
|
@ -117,39 +134,227 @@ module_end
|
||||||
# Informational stuff
|
# Informational stuff
|
||||||
|
|
||||||
module_begin
|
module_begin
|
||||||
module_name last_syslog
|
module_name Syslog (Last string)
|
||||||
module_type generic_data_string
|
module_type generic_data_string
|
||||||
module_exec tail -1 /var/log/system.log
|
module_exec tail -1 /var/log/system.log
|
||||||
module_description Last line of syslog
|
module_description Last line of syslog
|
||||||
module_end
|
module_end
|
||||||
|
|
||||||
module_begin
|
module_begin
|
||||||
module_name last_login
|
module_name Login (Last)
|
||||||
module_type generic_data_string
|
module_type generic_data_string
|
||||||
module_exec last | head -1
|
module_exec last | head -1
|
||||||
module_description Last connected to system
|
module_description Last connected to system
|
||||||
module_end
|
module_end
|
||||||
|
|
||||||
|
|
||||||
# Networking
|
# Networking
|
||||||
|
|
||||||
module_begin
|
module_begin
|
||||||
module_name incoming_pkt
|
module_name Network Packets (Incoming)
|
||||||
module_type generic_data_inc
|
module_type generic_data_inc
|
||||||
module_exec netstat -as | grep "total packets received" | awk '{ print $1 }' | head -1
|
module_exec netstat -as | grep "total packets received" | awk '{ print $1 }' | head -1
|
||||||
module_description Incoming packets arriving to system
|
module_description Incoming packets arriving to system
|
||||||
module_end
|
module_end
|
||||||
|
|
||||||
module_begin
|
module_begin
|
||||||
module_name outbound_pkt
|
module_name Network Packets (Outgoing)
|
||||||
module_type generic_data_inc
|
module_type generic_data_inc
|
||||||
module_exec netstat -as | grep "packets sent from this host" | awk '{ print $1 }' | head -1
|
module_exec netstat -as | grep "packets sent from this host" | awk '{ print $1 }' | head -1
|
||||||
module_description Outbound Packets sent by system
|
module_description Outbound Packets sent by system
|
||||||
module_end
|
module_end
|
||||||
|
|
||||||
module_begin
|
module_begin
|
||||||
module_name conn_resets
|
module_name Network Packets (Connection Reset)
|
||||||
module_type generic_data_inc
|
module_type generic_data_inc
|
||||||
module_exec netstat -as | grep "bad reset" | awk '{ print $1 }'
|
module_exec netstat -as | grep "bad reset" | awk '{ print $1 }'
|
||||||
module_description Bad Resets
|
module_description Bad Resets
|
||||||
module_end
|
module_end
|
||||||
|
|
||||||
|
module_begin
|
||||||
|
module_name Network Adapter en0 Status
|
||||||
|
module_type generic_proc
|
||||||
|
module_exec ifconfig en0 | grep status | awk '{ if($6=="active") { print 1}; if($6!="active") {print 0}}'
|
||||||
|
module_description Ethernet Link 0
|
||||||
|
module_end
|
||||||
|
|
||||||
|
# You should have alerts in case the number of rules change
|
||||||
|
|
||||||
|
#module_begin
|
||||||
|
#module_name Firewall Status
|
||||||
|
#module_type generic_data
|
||||||
|
#module_exec ipfw show | wc -l
|
||||||
|
#module_description Firewall (number of rules)
|
||||||
|
#module_end
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
# #
|
||||||
|
# The following is for use if you have services (or a server) running #
|
||||||
|
# This works for most services both in Leopard and Tiger #
|
||||||
|
# #
|
||||||
|
#######################################################################
|
||||||
|
|
||||||
|
## Uncomment/Comment as you go
|
||||||
|
|
||||||
|
#module_begin
|
||||||
|
#module_name Web (Apache) Status
|
||||||
|
#module_type generic_proc
|
||||||
|
#module_exec ps -A | grep "bin\/httpd" | wc -l
|
||||||
|
#module_description Webserver
|
||||||
|
#module_end
|
||||||
|
|
||||||
|
#module_begin
|
||||||
|
#module_name AFP
|
||||||
|
#module_type generic_proc
|
||||||
|
#module_exec ps -A | grep "sbin\/AppleFileServer" | wc -l
|
||||||
|
#module_description Apple File Server
|
||||||
|
#module_end
|
||||||
|
|
||||||
|
#module_begin
|
||||||
|
#module_name Application Server
|
||||||
|
#module_type generic_proc
|
||||||
|
#module_exec ps -A | grep "/Library/JBoss/3.2/bin/run.sh" | wc -l
|
||||||
|
#module_description Application Server (Tomcat & JBoss)
|
||||||
|
#module_end
|
||||||
|
|
||||||
|
#module_begin
|
||||||
|
#module_name DHCP
|
||||||
|
#module_type generic_proc
|
||||||
|
#module_exec ps -A | grep "bootp" | wc -l
|
||||||
|
#module_description DHCP & BOOTP server
|
||||||
|
#module_end
|
||||||
|
|
||||||
|
#module_begin
|
||||||
|
#module_name DNS
|
||||||
|
#module_type generic_proc
|
||||||
|
#module_exec ps auxw | grep "sbin\/named" | wc -l
|
||||||
|
#module_description DNS Server
|
||||||
|
#module_end
|
||||||
|
|
||||||
|
#module_begin
|
||||||
|
#module_name FTP
|
||||||
|
#module_type generic_proc
|
||||||
|
#module_exec ps -A | grep "LaunchDaemons\/ftp.plist" | wc -l
|
||||||
|
#module_description FTP Server
|
||||||
|
#module_end
|
||||||
|
|
||||||
|
#module_begin
|
||||||
|
#module_name iChat
|
||||||
|
#module_type generic_proc
|
||||||
|
#module_exec ps -A | grep "jabberd -c \/etc" | wc -l
|
||||||
|
#module_description iChat (jabber) Server
|
||||||
|
#module_end
|
||||||
|
|
||||||
|
#module_begin
|
||||||
|
#module_name Mail (SMTP)
|
||||||
|
#module_type generic_proc
|
||||||
|
#module_exec ps -axu | grep "postfix" | grep -v "grep" | wc -l
|
||||||
|
#module_description Mail - SMTP Server (postfix)
|
||||||
|
#module_end
|
||||||
|
|
||||||
|
#module_begin
|
||||||
|
#module_name Mail (IMAP)
|
||||||
|
#module_type generic_proc
|
||||||
|
#module_exec ps -axu | grep "master" | grep "cyrus" | grep -v "grep" | wc -l
|
||||||
|
#module_description Mail - IMAP Server (cyrus)
|
||||||
|
#module_end
|
||||||
|
|
||||||
|
#module_begin
|
||||||
|
#module_name Mail (AV/AS)
|
||||||
|
#module_type generic_proc
|
||||||
|
#module_exec ps -A | grep "amavisd (master)" | grep -v "grep" | wc -l
|
||||||
|
#module_description Mail - Antivirus/Antispam (amavisd)
|
||||||
|
#module_end
|
||||||
|
|
||||||
|
#module_begin
|
||||||
|
#module_name Mail - ClamAV
|
||||||
|
#module_type generic_proc
|
||||||
|
#module_exec ps -A | grep "clamd" | grep -v "grep" | wc -l
|
||||||
|
#module_description Mail - Antivirus (clamav)
|
||||||
|
#module_end
|
||||||
|
|
||||||
|
#module_begin
|
||||||
|
#module_name Mail (Mailing Lists)
|
||||||
|
#module_type generic_proc
|
||||||
|
#module_exec ps -A | grep "bin\/mailmanctl" | wc -l
|
||||||
|
#module_description Mail - Mailing Lists (mailman)
|
||||||
|
#module_end
|
||||||
|
|
||||||
|
#module_begin
|
||||||
|
#module_name NAT
|
||||||
|
#module_type generic_proc
|
||||||
|
#module_exec ps -A | grep "sbin\/natd" | wc -l
|
||||||
|
#module_description NAT Service
|
||||||
|
#module_end
|
||||||
|
|
||||||
|
#module_begin
|
||||||
|
#module_name NFS
|
||||||
|
#module_type generic_proc
|
||||||
|
#module_exec ps auxw | grep "nfsd-master" | grep -v "grep" | wc -l
|
||||||
|
#module_description NFS File Server
|
||||||
|
#module_end
|
||||||
|
|
||||||
|
#module_begin
|
||||||
|
#module_name Open Directory
|
||||||
|
#module_type generic_proc
|
||||||
|
#module_exec ps auxw | grep "krb5kdc" | grep -v "grep" | wc -l
|
||||||
|
#module_description Open Directory
|
||||||
|
#module_end
|
||||||
|
|
||||||
|
#module_begin
|
||||||
|
#module_name Print
|
||||||
|
#module_type generic_proc
|
||||||
|
#module_exec echo 0
|
||||||
|
#module_description Print Service
|
||||||
|
#module_end
|
||||||
|
|
||||||
|
#module_begin
|
||||||
|
#module_name QuickTime Streaming
|
||||||
|
#module_type generic_proc
|
||||||
|
#module_exec ps -A | grep "sbin\/QuickTimeStreamingServer" | wc -l
|
||||||
|
#module_description QT Streaming Service
|
||||||
|
#module_end
|
||||||
|
|
||||||
|
#module_begin
|
||||||
|
#module_name Software Update
|
||||||
|
#module_type generic_proc
|
||||||
|
#module_exec if [ `ps -A | grep "etc\/swupd" | wc -l` -gt "1" ]; then echo 1; else echo 0; fi
|
||||||
|
#module_description Software Update
|
||||||
|
#module_end
|
||||||
|
|
||||||
|
#module_begin
|
||||||
|
#module_name VPN
|
||||||
|
#module_type generic_proc
|
||||||
|
#module_exec echo 0
|
||||||
|
#module_description VPN
|
||||||
|
#module_end
|
||||||
|
|
||||||
|
#module_begin
|
||||||
|
#module_name WebObjects
|
||||||
|
#module_type generic_proc
|
||||||
|
#module_exec echo 0
|
||||||
|
#module_description WebObjects
|
||||||
|
#module_end
|
||||||
|
|
||||||
|
#module_begin
|
||||||
|
#module_name Windows (SMB daemon)
|
||||||
|
#module_type generic_proc
|
||||||
|
#module_exec ps -A | grep "sbin\/smbd" | wc -l
|
||||||
|
#module_description Windows Services (Samba)
|
||||||
|
#module_end
|
||||||
|
|
||||||
|
#module_begin
|
||||||
|
#module_name Windows (NMB daemon)
|
||||||
|
#module_type generic_proc
|
||||||
|
#module_exec ps -A | grep "sbin\/nmbd" | wc -l
|
||||||
|
#module_description Windows Services (Name Resolution)
|
||||||
|
#module_end
|
||||||
|
|
||||||
|
#module_begin
|
||||||
|
#module_name XGrid
|
||||||
|
#module_type generic_proc
|
||||||
|
#module_exec echo 0
|
||||||
|
#module_description XGrid
|
||||||
|
#module_end
|
||||||
|
|
||||||
|
# Plugin example (new in Pandora 2.0)
|
||||||
|
module_plugin grep_log /var/log/syslog Syslog ssh
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# Init script for Pandora FMS agent
|
# Init script for Pandora FMS agent
|
||||||
# Generic GNU/Linux version
|
# Generic GNU/Linux version
|
||||||
# (c) Sancho Lerena, <slerena@gmail.com>
|
# Sancho Lerena, <slerena@gmail.com>
|
||||||
# (c) Evi Vanoost <vanooste@rcbi.rochester.edu>
|
# v1.3.1
|
||||||
# v1.3
|
|
||||||
|
|
||||||
### BEGIN INIT INFO
|
### BEGIN INIT INFO
|
||||||
# Provides: pandora_agent
|
# Provides: pandora_agent
|
||||||
|
@ -26,45 +25,37 @@ then
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
. /etc/rc.common
|
case "$1" in
|
||||||
|
start)
|
||||||
StartService()
|
PANDORA_PID=$(pidof -x $DAEMON)
|
||||||
{
|
if [ ! -z "$PANDORA_PID" ]
|
||||||
if [ -f $PIDFILE ]
|
|
||||||
then
|
then
|
||||||
PID_BA=`cat $PIDFILE`
|
echo "Pandora FMS Agent is currently running on this machine with PID $PANDORA_PID"
|
||||||
if [ ! -z "`ps -Af | awk '{ print $2 }' | grep $PID_BA`" ]
|
|
||||||
then
|
|
||||||
echo "Pandora FMS Agent is currently running on this machine with PID $PID_BA"
|
|
||||||
echo "Cannot launch again. Aborting."
|
echo "Cannot launch again. Aborting."
|
||||||
exit
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
nohup $DAEMON $PANDORA_PATH 2> $LOGFILE & PANDORA_PID=$!
|
||||||
nohup $DAEMON $PANDORA_PATH 2> $LOGFILE & MYPID=$!
|
echo $PANDORA_PID > $PIDFILE
|
||||||
echo $MYPID > $PIDFILE
|
echo "Pandora FMS Agent is now running with PID $PANDORA_PID"
|
||||||
echo "Pandora FMS Agent is now running with PID $MYPID"
|
;;
|
||||||
}
|
stop)
|
||||||
|
PANDORA_PID=$(pidof -x $DAEMON)
|
||||||
StopService()
|
if [ -z "$PANDORA_PID" ]
|
||||||
{
|
|
||||||
if [ -f $PIDFILE ]
|
|
||||||
then
|
then
|
||||||
echo "Stopping Pandora Agent."
|
|
||||||
PID_2=`cat $PIDFILE`
|
|
||||||
if [ ! -z "`ps -f -p $PID_2 | grep -v grep | grep 'pandora_agent'`" ]
|
|
||||||
then
|
|
||||||
kill -9 $PID_2
|
|
||||||
fi
|
|
||||||
rm -f $PIDFILE
|
|
||||||
else
|
|
||||||
echo "Pandora FMS Agent is not running, cannot stop it. Aborting now..."
|
echo "Pandora FMS Agent is not running, cannot stop it. Aborting now..."
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "Stopping Pandora Agent."
|
||||||
|
kill $PANDORA_PID > /dev/null 2>&1
|
||||||
|
rm -f $PANDORA_PID
|
||||||
fi
|
fi
|
||||||
}
|
;;
|
||||||
|
force-reload|restart)
|
||||||
RestartService()
|
|
||||||
{
|
|
||||||
$0 stop
|
$0 stop
|
||||||
$0 start
|
$0 start
|
||||||
}
|
;;
|
||||||
|
*)
|
||||||
|
echo "Uso: /etc/init.d/pandora_agent_daemon {start|stop|restart|force-reload}"
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
|
||||||
RunService "$1"
|
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# **********************************************************************
|
# **********************************************************************
|
||||||
# Pandora FMS Agent - Generic Host Agent Installer
|
# Pandora FMS Agent - Generic Host Agent Installer
|
||||||
# Mac OS X version
|
# GNU/Linux version
|
||||||
# (c) 2007 Sancho Lerena <slerena@gmail.com>
|
# (c) 2007 Sancho Lerena <slerena@gmail.com>
|
||||||
# (c) 2007 Evi Vanoost <vanooste@rcbi.rochester.edu>
|
|
||||||
# Please see http://pandora.sourceforge.net
|
# Please see http://pandora.sourceforge.net
|
||||||
# This code is licensed under GPL 2.0 license.
|
# This code is licensed under GPL 2.0 license.
|
||||||
# **********************************************************************
|
# **********************************************************************
|
||||||
|
@ -14,10 +13,7 @@ PANDORA_HOME=/usr/share/pandora_agent
|
||||||
PANDORA_TEMP=/var/spool/pandora
|
PANDORA_TEMP=/var/spool/pandora
|
||||||
PANDORA_CFG=/etc/pandora
|
PANDORA_CFG=/etc/pandora
|
||||||
PANDORA_LOG=/var/log/pandora/pandora_agent.log
|
PANDORA_LOG=/var/log/pandora/pandora_agent.log
|
||||||
PANDORA_STARTUP_FOLDER=/Library/StartupItems/pandora_fms
|
PANDORA_STARTUP=/Library/StartupItems/pandora_fms
|
||||||
PANDORA_STARTUP=/Library/StartupItems/pandora_fms/pandora_fms
|
|
||||||
PANDORA_HOME_DIR=/rcbiUsers/pandora
|
|
||||||
PANDORA_SERVER=skull
|
|
||||||
FORCE=0
|
FORCE=0
|
||||||
LOG_TIMESTAMP=`date +"%Y/%m/%d %H:%M:%S"`
|
LOG_TIMESTAMP=`date +"%Y/%m/%d %H:%M:%S"`
|
||||||
|
|
||||||
|
@ -33,12 +29,12 @@ fi
|
||||||
|
|
||||||
uninstall () {
|
uninstall () {
|
||||||
echo "Removing Pandora FMS Agent..."
|
echo "Removing Pandora FMS Agent..."
|
||||||
rm -f $PANDORA_BIN
|
rm -Rf $PANDORA_BIN
|
||||||
rm -Rf $PANDORA_TEMP
|
rm -Rf $PANDORA_TEMP
|
||||||
rm -Rf $PANDORA_CFG
|
rm -Rf $PANDORA_CFG
|
||||||
|
rm -Rf $PANDORA_STARTUP
|
||||||
rm -Rf $PANDORA_HOME
|
rm -Rf $PANDORA_HOME
|
||||||
rm -Rf $PANDORA_LOG
|
rm -Rf $PANDORA_LOG
|
||||||
rm -Rf $PANDORA_STARTUP_FOLDER
|
|
||||||
echo "Done"
|
echo "Done"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,8 +59,6 @@ install () {
|
||||||
|
|
||||||
# Create directories
|
# Create directories
|
||||||
echo "Creating Pandora FMS Agent home directory at $PANDORA_HOME ..."
|
echo "Creating Pandora FMS Agent home directory at $PANDORA_HOME ..."
|
||||||
|
|
||||||
mkdir $PANDORA_STARTUP_FOLDER
|
|
||||||
mkdir $PANDORA_HOME
|
mkdir $PANDORA_HOME
|
||||||
mkdir $PANDORA_TEMP
|
mkdir $PANDORA_TEMP
|
||||||
mkdir $PANDORA_TEMP/data_out
|
mkdir $PANDORA_TEMP/data_out
|
||||||
|
@ -93,9 +87,11 @@ install () {
|
||||||
cp pandora_agent.conf $PANDORA_HOME
|
cp pandora_agent.conf $PANDORA_HOME
|
||||||
chmod 600 $PANDORA_HOME/pandora_agent.conf
|
chmod 600 $PANDORA_HOME/pandora_agent.conf
|
||||||
|
|
||||||
echo "Copying Pandora FMS Agent user configuration file to $PANDORA_HOME/pandora_user.conf..."
|
echo "Copying Pandora FMS Agent plugins to $PANDORA_HOME/plugins..."
|
||||||
cp pandora_user.conf $PANDORA_HOME
|
cp -r plugins $PANDORA_HOME
|
||||||
chmod 700 $PANDORA_HOME/pandora_user.conf
|
chmod -R 700 $PANDORA_HOME/plugins
|
||||||
|
echo "Linking Pandora FMS Agent plugins directory to $PANDORA_CFG/plugins..."
|
||||||
|
ln -s $PANDORA_HOME/plugins $PANDORA_CFG
|
||||||
|
|
||||||
echo "Linking Pandora FMS Agent configuration to $PANDORA_CFG/pandora_agent.conf..."
|
echo "Linking Pandora FMS Agent configuration to $PANDORA_CFG/pandora_agent.conf..."
|
||||||
ln -s $PANDORA_HOME/pandora_agent.conf $PANDORA_CFG
|
ln -s $PANDORA_HOME/pandora_agent.conf $PANDORA_CFG
|
||||||
|
@ -108,9 +104,10 @@ install () {
|
||||||
chmod -R 600 $PANDORA_TEMP/data_out
|
chmod -R 600 $PANDORA_TEMP/data_out
|
||||||
chmod 640 $PANDORA_LOG
|
chmod 640 $PANDORA_LOG
|
||||||
chgrp 3 $PANDORA_LOG
|
chgrp 3 $PANDORA_LOG
|
||||||
echo "Copying start-up daemon script at $PANDORA_STARTUP";
|
echo "Copyng start-up daemon script at $PANDORA_STARTUP";
|
||||||
cp pandora_agent_daemon $PANDORA_STARTUP
|
cp -R pandora_fms $PANDORA_STARTUP
|
||||||
cp StartupParameters.plist $PANDORA_STARTUP
|
chown -R root:wheel $PANDORA_STARTUP
|
||||||
|
chmod -R 644 $PANDORA_STARTUP
|
||||||
chown -R root $PANDORA_BIN
|
chown -R root $PANDORA_BIN
|
||||||
echo "Done."
|
echo "Done."
|
||||||
echo " "
|
echo " "
|
||||||
|
|
Loading…
Reference in New Issue