From 9c4a93e9f28a610ebf50e2f21be21c9281f389a0 Mon Sep 17 00:00:00 2001 From: slerena Date: Mon, 26 May 2008 20:45:11 +0000 Subject: [PATCH] 2008-05-25 Sancho Lerena * linux/pandora_agent: New cron mode, new ftp mode that do not use .netrc anymore, uses password embedded into .conf. Also a few fixes and removed checksum mode (deprecated!). * linux/pandora_agent.conf: Updated .conf git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@838 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f --- pandora_agents/ChangeLog | 8 ++ pandora_agents/linux/pandora_agent | 92 ++++++++++---------- pandora_agents/linux/pandora_agent.conf | 109 +++++------------------- 3 files changed, 77 insertions(+), 132 deletions(-) diff --git a/pandora_agents/ChangeLog b/pandora_agents/ChangeLog index d6d3277cdf..425701e46f 100644 --- a/pandora_agents/ChangeLog +++ b/pandora_agents/ChangeLog @@ -1,3 +1,11 @@ +2008-05-25 Sancho Lerena + + * linux/pandora_agent: New cron mode, new ftp mode that do not use + .netrc anymore, uses password embedded into .conf. Also a few fixes + and removed checksum mode (deprecated!). + + * linux/pandora_agent.conf: Updated .conf + 2008-05-19 Ramon Novoa * linux/pandora_agent_installer: Added plugin installation. diff --git a/pandora_agents/linux/pandora_agent b/pandora_agents/linux/pandora_agent index 5b56ba9765..f4ab22c3f6 100755 --- a/pandora_agents/linux/pandora_agent +++ b/pandora_agents/linux/pandora_agent @@ -1,14 +1,14 @@ #!/bin/bash # ********************************************************************** # Pandora FMS Generic Host Agent -# GNU/Linux version 1.3 -# (c) 2003-2007 Sancho Lerena +# GNU/Linux version 2.0 +# (c) 2003-2008 Sancho Lerena # with the help of many people. Please see http://pandora.sourceforge.net # This code is licensed under GPL 2.0 license. # ********************************************************************** -AGENT_VERSION=1.3 -AGENT_BUILD=070725 +AGENT_VERSION=2.0 +AGENT_BUILD=080525 if [ -z "$1" ] then @@ -38,13 +38,13 @@ 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 +CRON_MODE=0 if [ -z "`echo $LANG | grep '\.'`" ] then ENCODING="iso-8859-1" @@ -97,11 +97,7 @@ do DEBUG_MODE=`echo $a | awk '{ print $2 }' ` echo "$TIMESTAMP - [SETUP] - Debug mode is $DEBUG_MODE " >> $PANDORA_LOGFILE 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 if [ ! -z "`echo $a | grep -e '^server_port'`" ] then @@ -137,7 +133,7 @@ do if [ ! -z "$SERVER_PWD" ] then 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 if [ ! -z "`echo $a | grep -e '^server_ssl'`" ] @@ -149,6 +145,11 @@ do echo "$TIMESTAMP - [SETUP] - OpenSSL enabled for Tentacle" >> $PANDORA_LOGFILE 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'`" ] then SERVER_OPTS=`echo $a | awk -F'"' '{ print $2 }' ` @@ -192,22 +193,26 @@ else fi fi -# Script banner at start -echo "Pandora FMS Agent $AGENT_VERSION (c) Sancho Lerena 2007" -echo "This program is licensed under GPL2 Terms. http://pandora.sf.net" -echo "Running in $NOMBRE_HOST at $TIMESTAMP" -echo " " +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 # 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 @@ -223,7 +228,7 @@ then fi # Renice me -renice $PANDORA_NICE $$ +renice $PANDORA_NICE $$ 2> /dev/null > /dev/null # MAIN Program loop begin @@ -239,8 +244,6 @@ do # File names DATA=$TEMP/$NOMBRE_HOST.$SERIAL.data DATA2=$TEMP/$NOMBRE_HOST.$SERIAL.data_temp - CHECKSUM=$TEMP/$NOMBRE_HOST.$SERIAL.checksum - PANDORA_FILES="$TEMP/$NOMBRE_HOST.$SERIAL.*" # Makes data packet echo " " > $DATA @@ -356,18 +359,6 @@ do CONTADOR=0 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 echo "" >> $DATA echo "" >> $DATA @@ -388,26 +379,39 @@ do # Send packets to server and delete it if [ "$TRANSFER_MODE" == "tentacle" ] then - eval tentacle_client -v -a $SERVER_IP -p $SERVER_PORT $TENTACLE_OPTS $PANDORA_FILES > /dev/null 2> $PANDORA_LOGFILE.err + eval tentacle_client -v -a $SERVER_IP -p $SERVER_PORT $TENTACLE_OPTS $DATA > /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 + scp -P $SERVER_PORT $DATA 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 + ftp -n $SERVER_IP $SERVER_PORT > /dev/null 2> $PANDORA_LOGFILE.err < /dev/null 2> $PANDORA_LOGFILE.err + cp $DATA $SERVER_PATH > /dev/null 2> $PANDORA_LOGFILE.err fi # 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 :-) sleep $INTERVAL diff --git a/pandora_agents/linux/pandora_agent.conf b/pandora_agents/linux/pandora_agent.conf index a25e888494..c4c9060134 100755 --- a/pandora_agents/linux/pandora_agent.conf +++ b/pandora_agents/linux/pandora_agent.conf @@ -1,13 +1,14 @@ # Base config file for Pandora FMS agents -# Version 1.2 +# Version 2.0 # Licensed under GPL license v2, -# (c) 2003-2007 Sancho Lerena and others. +# (c) 2003-2008 Artica Soluciones Tecnologicas +# (c) 2003-2008 Sancho Lerena # please visit http://pandora.sourceforge.net # General Parameters # ================== -server_ip 192.168.50.1 +server_ip localhost server_path /var/spool/pandora/data_in temporal /var/spool/pandora/data_out logfile /var/log/pandora/pandora_agent.log @@ -19,39 +20,41 @@ interval 300 # and does not copy XML to server. debug 0 -# By default is activated -checksum 0 - # By default, agent takes machine name #agent_name adama # By default agent try to take default encoding defined in host. # encoding iso-8859-15 -# By default is 22 (for ssh) -#server_port 22 +# Listening TCP port for remote server. By default is 41121 (for tentacle) +# if you want to use SSH use 22, and FTP uses 21. +server_port 21 -# tentacle, ftp, ssh or local -transfer_mode ssh +# Transfer mode: tentacle, ftp, ssh or local +transfer_mode tentacle -# Tentacle server password. Leave empty for no password (default). -#server_pwd +# 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 +# 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 -# for first time when startup Pandora Agent - -#delayed_startup 90 +# for first time when startup Pandora FMS Agent +# delayed_startup 10 #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 -#pandora_nice 0 +#A recommended value is 10. 0 priority means no Pandora CPU protection enabled (default) +# pandora_nice 0 +# Cron mode replace Pandora FMS own task schedule each XX interval seconds by the use +# of old style cron. You should add to crontab Pandora FMS agent script to use this mode. +# This is disabled by default, and is not recommended. Use Pandora FMS internal scheduler +# is much more safe. +# cron_mode # Module Definition # ================= @@ -117,80 +120,10 @@ module_end # Process information -module_begin -module_name apache -module_type generic_proc -module_exec ps -Af | grep apache | grep -v "grep" | wc -l -module_end - module_begin module_name sshDaemon module_type generic_proc module_exec ps -Af | grep sshd | grep -v "grep" | wc -l module_end -# Informational stuff - -module_begin -module_name last_syslog -module_type generic_data_string -module_exec tail -1 /var/log/syslog -module_description Last line of syslog -module_end - -module_begin -module_name last_login -module_type generic_data_string -module_exec last | head -1 -module_description Last connected to system -module_end - - -# Networking - -module_begin -module_name incoming_pkt -module_type generic_data_inc -module_exec netstat -as | grep "incoming packets delivered" | awk '{ print $1 }' -module_description Incoming packets arriving to system -module_end - -module_begin -module_name outbound_pkt -module_type generic_data_inc -module_exec netstat -as | grep "requests sent out" | awk '{ print $1 }' -module_description Outbound Packets sent by system -module_end - -module_begin -module_name conn_resets -module_type generic_data_inc -module_exec netstat -as | grep "connections reset due to unexpected SYN" | awk '{ print $1 }' -module_description Resets due to unexpected SYN -module_end - -module_begin -module_name PandoraNetwork_RAM -module_exec ps aux | grep pandora_network | head -1 | awk '{ print $6 }' -module_type generic_data -module_end - -module_begin -module_name PandoraNetwork_CPU -module_exec ps aux | grep pandora_network | head -1 | awk '{print $3}' -module_type generic_data -module_end - -module_begin -module_name PandoraDS_RAM -module_exec ps aux | grep pandora_server | head -1 | awk '{ print $6 }' -module_type generic_data -module_end - -module_begin -module_name PandoraDS_CPU -module_exec ps aux | grep pandora_server | head -1 | awk '{print $3}' -module_type generic_data -module_end -