# Cacti Install Script
# This script should work on all RHEL/CentOS 6.x systems but was built and tested
# on a CentOS 6 system installed with the minimal CD.
# I make no promises that this will work every time, if ever…
# Proceed at your own risk! I am not responsible for any mistakes or issues caused.
# This script has no error checking! Add some if you’d like.
# Feel free to share this, just please post a link back to my site giving credit
# where credit is due. Enjoy!
#
# By: Chris Adams
#     linuxchris@gmail.com
# On: 29 Aug 2011
#
# Modify the password variables below to match what you want

MYSQLPASS='MySQL1212'
CACTIPASS='Cact1212'
CACTIVERSION=`wget -qO- www.cacti.net| grep "latest version" | sed 's/<[^>]*>//g' | awk '{print $NF}'`
RRDVERSION=1.4.8
PKG_CONFIG_PATH="/usr/lib/pkgconfig/"
CACTITMP="/tmp/cactisql.tmp"
SERVERS=("mysqld" "httpd" "ntpd")
OFFSERVERS=("iptables" "ip6tables")

# Centos Minimal needs these added
yum -y install httpd php php-mysql php-snmp php-xml mysql mysql-server cairo-devel libxml2-devel pango-devel pango libpng-devel freetype freetype-devel libart_lgpl-devel net-snmp-utils gcc wget man make perl-CPAN perl-ExtUtils-MakeMaker perl-ExtUtils-MakeMaker-Coverage crontabs xorg-x11-fonts-100dpi xorg-x11-fonts-Type1 xorg-x11-fonts-75dpi

sed -i -e "s#^SELINUX\=enforcing#SELINUX\=disabled#" /etc/selinux/config

for i in ${OFFSERVERS[@]}
       do
       echo "Starting ${i}\n"
       chkconfig ${i} off
       service ${i} stop
       done
#Turn onn and enable the needed servers to start at boot

for i in ${SERVERS[@]}
       do
       echo "Starting ${i}\n"
       chkconfig ${i} on
       service ${i} start
       done

# Add teh fonts we installed to the font cache for Apache to use
echo "Upating Fornts for Apache Use, we dont want our Cacti to be ugly!"
fc-cache -vfs

echo "Now on to rrdtool"
# Download the latest rrdtool and store in /opt
cd /opt
wget http://oss.oetiker.ch/rrdtool/pub/rrdtool.tar.gz
tar -xzf rrdtool.tar.gz
cd rrdtool-$RRDVERSION
#Build and install rrdtool
./configure && make && make install
cd /usr/local
ln -s /opt/rrdtool-$RRDVERSION rrdtool

echo "MySQL stuff being done..."
#Set Mysql password for root
mysqladmin --user=root password $MYSQLPASS
mysqladmin --user=root -p$MYSQLPASS reload

echo "Finally... The Cacti stuff!"
cd /var/www/html/
wget http://www.cacti.net/downloads/cacti-$CACTIVERSION.tar.gz
tar -xzf cacti-$CACTIVERSION.tar.gz
mv cacti-$CACTIVERSION cacti
cd cacti
#Cacti SQL
echo "GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY '$CACTIPASS';" > $CACTITMP
echo "flush privileges;" >> $CACTITMP
mysqladmin --user=root create cacti -p$MYSQLPASS
mysql -u root -p$MYSQLPASS cacti < cacti.sql
mysql -u root -p$MYSQLPASS cacti < $CACTITMP
rm -f $CACTITMP
#Set the proper password for the Cacti DB user in the config
sed -i -e "s/^\$database_password\ \= \"cactiuser\"/\$database_password\ \= \"${CACTIPASS}\"/" include/config.php
chown -R apache:apache /var/www/html/cacti
# Crontab entry for cacti (runs as root)
echo '*/5 * * * * root /usr/bin/php /var/www/html/cacti/poller.php > /dev/null 2>&1' > /etc/cron.d/0Cacti
echo "If there were no errors reported, everything should now be installed!\n"
echo "You will now need to reboot the server to apply the SELinux settings (or run setenforce).\n"
