# Global variables
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin
ICINGACFG=/path/to/icinga.cfg
CONFDIR=/path/to/your/config/files/
TMPFILE=/tmp/dialog.tmp
GROUP="group"

# Colors
green='\e[0;32m'
red='\e[0;31m'
blue='\e[1;34m'
endColor='\e[0m'


#Generate password
PASSWORD=$(/usr/bin/perl -le'print map+(A..Z,a..z,0..9)[rand 62],1..'8);

# Get monitor name
echo -n "Monitoring title: "
read -e NAME

# Define config file name
FILE=$NAME".cfg"

# Check if file with this name exists
if [ -f "$CONFDIR$FILE" ]; then
        while [ -f "$CONFDIR$FILE" ]
            do
                echo -n "File with this name exists. Enter new name: "
                read -e NAME
		FILE=$NAME".cfg"
       	    done
fi

# Get hostname
echo -n "Enter hostname: "
read -e HOSTNAME

# Check if hostname exists.
if [ "$(ls -A $CONFDIR)" ]; then
		while grep "host_name" $CONFDIR/* | grep -q $HOSTNAME
	    		do
				echo -n "Entered hostname exists. Enter new hostname: "
           	    		read -e HOSTNAME
	    		done
fi

# Get IP address of server
echo -n "Enter IP address: "
read -e IP


# Show dialog box with list of services
dialog \
        --title "SELECT SERVICES" \
        --checklist "Chose services" 20 80 15 \
	check_ssh  "Check SSH" on \
	check_http "Check HTTP" off \
	check_mysql "Check MYSQL" off \
	check_ftp "Check FTP" off \
	check_smtp "Check SMTP" off \
	check_imap "Check IMAP" off \
	check_pop "Check POP" off \
	check_load "Check LOAD" on \
        check_swap "Check SWAP" on \
        check_disk_usr "Check disk /usr" off \
        check_disk_var "Check disk /var" off \
        check_disk_root "Check disk /root" off \
        check_disk_tmp "Check disk /tmp" off 2> $TMPFILE



# Define name of configuration files
HOSTSCFG=$NAME".cfg"


# Define host
echo    "define host {" >> $CONFDIR$HOSTSCFG
echo -e   "\tuse\t\t\t\t\t generic-host" >> $CONFDIR$HOSTSCFG
echo -e   "\thost_name\t\t\t\t $HOSTNAME" >> $CONFDIR$HOSTSCFG
echo -e   "\taddress\t\t\t\t\t $IP" >> $CONFDIR$HOSTSCFG
echo -e   "\tcontact_groups\t\t\t\t $GROUP" >> $CONFDIR$HOSTSCFG
echo -e   "\tcheck_command\t\t\t\t check_icmp" >> $CONFDIR$HOSTSCFG
echo	"}" >> $CONFDIR$HOSTSCFG


# Generate configuration file
for WORD in `cat $TMPFILE`
do
WORD=${WORD//\"/}
case "$WORD" in 
  'check_ssh')
	COMMAND="SSH"
	OPERATION="$WORD! -p 65022";;
  'check_http')
        COMMAND="HTTP"
        OPERATION="$WORD! -H $HOSTNAME";;
  'check_mysql')
	COMMAND="MYSQL"
	OPERATION="$WORD! -u nagios -p $PASSWORD";;
  'check_ftp')
	COMMAND="FTP"
	OPERATION="$WORD! -H $HOSTNAME";;
  'check_smtp')
	COMMAND="SMTP"
        OPERATION="$WORD! -H $HOSTNAME";;
  'check_imap')
	COMMAND="IMAP"
        OPERATION="$WORD! -H $HOSTNAME";;
  'check_pop')
	COMMAND="POP"
        OPERATION="$WORD! -H $HOSTNAME";;
  'check_load')
	COMMAND="LOAD"	
	OPERATION="check_nrpe!$WORD";;
  'check_swap')
	COMMAND="SWAP"
        OPERATION="check_nrpe!$WORD";;
  'check_disk_root')
	COMMAND="DISK-/"
        OPERATION="check_nrpe!$WORD";;
  'check_disk_var')
	COMMAND="DISK-/var"
        OPERATION="check_nrpe!$WORD";;
  'check_disk_usr')
	COMMAND="DISK-/usr"
        OPERATION="check_nrpe!$WORD";;
  'check_disk_tmp')
	COMMAND="DISK-/tmp"
        OPERATION="check_nrpe!$WORD";;
esac

# Write data	
	echo -e "\n" >> $CONFDIR$HOSTSCFG
    	echo -e "define service {" >> $CONFDIR$HOSTSCFG
        echo -e "\tuse\t\t\t\t\t generic-service" >> $CONFDIR$HOSTSCFG 
        echo -e "\thost_name\t\t\t\t $HOSTNAME" >> $CONFDIR$HOSTSCFG
        echo -e "\tservice_description\t\t\t $COMMAND" >> $CONFDIR$HOSTSCFG
        echo -e "\tcontact_groups\t\t\t\t $GROUP" >> $CONFDIR$HOSTSCFG
        echo -e "\tcheck_command\t\t\t\t $OPERATION" >> $CONFDIR$HOSTSCFG
    	echo -e "}" >> $CONFDIR$HOSTSCFG
done


# Add new created host to icinga.cfg
echo -e "\n" >> $ICINGACFG
echo "### $NAME" >> $ICINGACFG
echo "cfg_file="$CONFDIR$HOSTSCFG >> $ICINGACFG



if [ $(ls -A $CONFDIR$HOSTSCFG) ]; then
   STATUS="${green}[OK]${endColor}"
else
   STATUS="${red}[FAIL]${endColor}"
fi
 
if grep -H -r -w "$HOSTSCFG" $ICINGACFG; then
   STATUS2="${green}[OK]${endColor}"
else
   STATUS2="${red}[FAIL]${endColor}"
fi

echo -e "\n"
echo -e " File $HOSTSCFG created\t\t\t $STATUS"
echo -e " Data added to icinga.cfg\t\t\t\t $STATUS2"
if grep -q 'check_mysql' $TMPFILE; then
	echo -e " ${green}Password for mysql user nagios\t\t\t\t${endColor} ${blue}$PASSWORD${endColor}"
fi
echo -e "\n"

rm -rf $TMPFILE
