pandorafms/pandora_server/util/pandora_remote_agent.sh

93 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
# (c) 2021 Sancho Lerena <slerena@artica.es>
# This is a remote agent script, to use local plugins from a distant server.
# You can run this from a local pandora agent.
# Run with -h to see more information
# Configurable tokens
TEMP=/tmp
OUTPUTDIR=/var/spool/pandora/data_in
OS_NAME=Linux
ENCODING="iso-8859-1"
INTERVAL=300
function help {
echo -e ""
echo -e "Remote agent script for Pandora FMS. http://pandorafms.com"
echo -e "Syntax:"
echo -e "\t-a agent Agent name as will be presented in the output XML"
echo -e "\t-f scriptfile Script file to execute. It must generate the XML for modules itself"
echo -e "\t-e encoding Character encoding of the agent name and scriptfile output (default: $ENCODING)"
echo -e "\t-h This help"
echo ""
exit
}
if [ $# -eq 0 ]
then
help
fi
AGENT=""
SCRIPTFILE=""
while getopts ":h:a:f:e:" optname
do
case "$optname" in
"h")
help
;;
"a")
AGENT=$OPTARG
;;
"f")
SCRIPTFILE=$OPTARG
;;
"e")
ENCODING=$OPTARG
;;
?)
help
;;
default)
help
;;
esac
done
if [ -z "$AGENT" ]
then
help
exit
fi
if [ -z "$SCRIPTFILE" ]
then
help
exit
fi
# Date and time, SERIAL is number of seconds since 1/1/1970, for every packet.
TIMESTAMP=`date +"%Y/%m/%d %H:%M:%S"`
SERIAL=`date +"%s"`
# File names
DATA=$TEMP/$AGENT.$$.$SERIAL.data
# Makes data packet
echo "<?xml version=\"1.0\" encoding=\"$ENCODING\"?> " > $DATA
echo "<agent_data os_name='$OS_NAME' interval='$INTERVAL' version='4.0-Remote' timestamp='$TIMESTAMP' agent_name='$AGENT'>" >> $DATA
# Execute the script file
eval $SCRIPTFILE >> $DATA
# Finish data packet
echo "</agent_data>" >> $DATA
echo "" >> $DATA
# Moving to target directory
mv $DATA $OUTPUTDIR