天天看点

CentOS 一键安装Cacti 1.2.3脚本

CentOS 一键安装Cacti 1.2.3脚本

转自:https://blog.51cto.com/11434894/2396817?source=dra

#!/bin/bash

echo “this script requires git”

yum install -y git

echo “This script will download all Cacti dependecies and download the chosen cacti version from the cacti github”

echo “Dont forget to support cacti @ cacti.net!”

echo “set selinux to disabled”

setenforce 0

sed -i ‘s/enforcing/disabled/g’ /etc/selinux/config /etc/selinux/config

#Download chosen release

echo "here are some of the current cacti release versions \n

release/1.2.3

release/1.2.2

release/1.2.1

release/1.2.0

"

echo “which release would you like to download ? Hit enter for latest”

read version

if [ “$version” == “” ]

then

git clone https://github.com/Cacti/cacti.git

else

yum install -y wget unzip

wget https://github.com/Cacti/cacti/archive/release/$version.zip

unzip v e r s i o n m v c a c t i − r e l e a s e − version mv cacti-release- versionmvcacti−release−version cacti

fi

echo “will you be using the spine poller enter 1 for yes 2 for no”

read answer

if [ $answer == “1” ]

then

##Download packages needed for spine

yum install -y gcc mysql-devel net-snmp-devel autoconf automake libtool dos2unix help2man

echo “downloading and compling spine”

git clone https://github.com/Cacti/spine.git

cd spine

./bootstrap

./configure

make

make install

chown root:root /usr/local/spine/bin/spine

chmod u+s /usr/local/spine/bin/spine

cd …

else

echo “spine dependecies will not be installed”

fi

echo “On Centos systems we need to enable EPEL repos”

yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y

yum install yum-utils -y

yum-config-manager --enable remi-php72

echo “Downloading PHP modules needed for Cacti install”

yum install -y rrdtool mariadb-server net-snmp-utils net-snmp snmpd php php-mysql php-snmp php-xml php-mbstring php-json php-gd php-gmp php-zip php-ldap php-mc php-posix

###Start services

systemctl enable httpd

systemctl enable mariadb

systemctl start mariadb

systemctl start httpd

####Open Port 80 and 443 on firewalld

echo “Open http and https ports on firewalld”

firewall-cmd --zone=public --add-port=80/tcp --permanent

firewall-cmd --zone=public --add-port=443/tcp --permanent

firewall-cmd --reload

##Timezone settings needed for cacti

echo "Enter your PHP time zone i.e America/Toronto Default is US/Central "

read timezone

if [ $timezone == “” ]

then

echo “date.timezone =” US/Central >> /etc/php.ini

else

echo “date.timezone =” $timezone >> /etc/php.ini

fi

echo “Where would you like to install cacti default location is /var/www/html hit enter for default location”

read location

if [$location = “”]

then

location="/var/www/html"

mv cacti /var/www/html

else

mv cacti $location

fi

#Create cacti user and change permission of directory

echo “Which user would you like to run Cacti under (Default is www-data) hit enter for default”

read user

if [$user = “”]

then

user=“apache”

echo “cacti will be run under apache”

chown -R apache:apache $location/cacti

else

useradd $user

chown -R u s e r : user: user:user $location/cacti

fi

#assign permissions for cacti installation

chown -R apache:apache $location/cacti/resource/snmp_queries/

chown -R apache:apache $location/cacti/resource/script_server/

chown -R apache:apache $location/cacti/resource/script_queries/

chown -R apache:apache $location/cacti/scripts/

chown -R apache:apache $location/cacti/cache/boost/

chown -R apache:apache $location/cacti/cache/mibcache/

chown -R apache:apache $location/cacti/cache/realtime/

chown -R apache:apache $location/cacti/cache/spikekill/

touch $location/cacti/log/cacti.log

chmod 777 $location/cacti/log/cacti.log

chown -R apache:apache $location/cacti/log/

cp $location/cacti/include/config.php.dist $location/cacti/include/config.php

##Create database

echo “would you like to customize the database name and user ? hit enter for defaults”

read customize

if [[ $customize = “” ]]

then

mysql -uroot <<MYSQL_SCRIPT

CREATE DATABASE cacti DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ;

GRANT ALL PRIVILEGES ON cacti.* TO ‘cacti’@‘localhost’ IDENTIFIED BY ‘cacti’; ;

GRANT SELECT ON mysql.time_zone_name TO [email protected];

USE mysql;

ALTER DATABASE cacti CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

FLUSH PRIVILEGES;

MYSQL_SCRIPT

#pre populate cacti db

mysql -u root cacti < $location/cacti/cacti.sql

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql

sed -i -e ‘[email protected]^ d a t a b a s e t y p e . ∗ @ database_type.*@ databaset​ype.∗@database_type = “mysql”;@g’ /var/www/html/cacti/include/config.php

sed -i -e ‘[email protected]^ d a t a b a s e d e f a u l t . ∗ @ database_default.*@ databased​efault.∗@database_default = “cacti”;@g’ /var/www/html/cacti/include/config.php

sed -i -e ‘[email protected]^ d a t a b a s e h o s t n a m e . ∗ @ database_hostname.*@ databaseh​ostname.∗@database_hostname = “127.0.0.1”;@g’ /var/www/html/cacti/include/config.php

sed -i -e ‘[email protected]^ d a t a b a s e u s e r n a m e . ∗ @ database_username.*@ databaseu​sername.∗@database_username = “cacti”;@g’ /var/www/html/cacti/include/config.php

sed -i -e ‘[email protected]^ d a t a b a s e p a s s w o r d . ∗ @ database_password.*@ databasep​assword.∗@database_password = “cacti”;@g’ /var/www/html/cacti/include/config.php

sed -i -e ‘[email protected]^ d a t a b a s e p o r t . ∗ @ database_port.*@ databasep​ort.∗@database_port = “3306”;@g’ /var/www/html/cacti/include/config.php

sed -i -e ‘[email protected]^ d a t a b a s e s s l . ∗ @ database_ssl.*@ databases​sl.∗@database_ssl = “false”;@g’ /var/www/html/cacti/include/config.php

sed -i -e ‘[email protected]^// u r l p a t h @ [email protected] urlp​ath@[email protected]’ /var/www/html/cacti/include/config.php

echo “default database setup with following details”

echo “database name cacti\n

database username cacti\n

database password cacti”

else

echo “enter db name”

read customdbname

echo “enter db user”

read customdbuser

echo “enter db password”

read customdbpassword

mysql -u root <<MYSQL_SCRIPT

CREATE DATABASE $customdbname;

GRANT ALL PRIVILEGES ON c u s t o m d b n a m e . ∗ T O ′ customdbname.* TO ' customdbname.∗TO′customdbuser’@‘localhost’ IDENTIFIED BY ‘$customdbpassword’;

GRANT SELECT ON mysql.time_zone_name TO [email protected];

ALTER DATABASE $customdbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

FLUSH PRIVILEGES;

MYSQL_SCRIPT

echo “Pre-populating cacti DB”

mysql -u root $customdbname < $location/cacti/cacti.sql

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql

sed -i -e ‘[email protected]^ d a t a b a s e t y p e . ∗ @ database_type.*@ databaset​ype.∗@database_type = “mysql”;@g’ KaTeX parse error: Expected group after '^' at position 48: …p sed -i -e '[email protected]^̲database_default.@ d a t a b a s e d e f a u l t = ′ database_default = ' databased​efault=′customdbname’;@g’ KaTeX parse error: Expected group after '^' at position 48: …p sed -i -e '[email protected]^̲database_hostname.@$database_hostname = “127.0.0.1”;@g’ KaTeX parse error: Expected group after '^' at position 48: …p sed -i -e '[email protected]^̲database_username.@ d a t a b a s e u s e r n a m e = ′ database_username = ' databaseu​sername=′customdbuser’;@g’ KaTeX parse error: Expected group after '^' at position 48: …p sed -i -e '[email protected]^̲database_password.@ d a t a b a s e p a s s w o r d = ′ database_password = ' databasep​assword=′customdbpassword’;@g’ KaTeX parse error: Expected group after '^' at position 48: …p sed -i -e '[email protected]^̲database_port.*@ d a t a b a s e p o r t = " 3306 " ; @ g ′ " database_port = "3306";@g' " databasep​ort="3306";@g′"location"/cacti/include/config.php

sed -i -e ‘[email protected]^ d a t a b a s e s s l . ∗ @ database_ssl.*@ databases​sl.∗@database_ssl = “false”;@g’ " l o c a t i o n " / c a c t i / i n c l u d e / c o n f i g . p h p s e d − i − e ′ s @ / / location"/cacti/include/config.php sed -i -e '[email protected]^// location"/cacti/include/config.phpsed−i−e′s@//[email protected][email protected]’ $location/cacti/include/config.php

fi

###Adding recomended PHP settings

sed -e ‘s/max_execution_time = 30/max_execution_time = 60/’ -i /etc/php.ini

sed -e ‘s/memory_limit = 128M/memory_limit = 400M/’ -i /etc/php.ini

echo “Applying recommended DB settings”

echo "

innodb_file_format = Barracuda

character_set_client = utf8mb4

max_allowed_packet = 16777777

join_buffer_size = 32M

innodb_file_per_table = ON

innodb_large_prefix = 1

innodb_buffer_pool_size = 250M

innodb_additional_mem_pool_size = 90M

innodb_flush_log_at_trx_commit = 2

" >> /etc/my.cnf.d/server.cnf

echo “this script can download the following plugins monitor,thold would you like to install them ?

type yes to download hit enter to skip”

read plugins

if [ $plugins == “yes” ]

then

git clone https://github.com/Cacti/plugin_thold.git

git clone https://github.com/Cacti/plugin_monitor.git

mv plugin_thold thold

mv plugin_monitor monitor

chown -R u s e r : user: user:user thold

chown -R u s e r : user: user:user monitor

mv thold $location/cacti/plugins

mv monitor $location/cacti/plugins

else

echo “plugins will not be installed”

fi

touch /etc/cron.d/$user

echo "*/5 * * * * $user php KaTeX parse error: Expected 'EOF', got '&' at position 41: … > /dev/null 2>&̲1" > /etc/cron.…user

echo “refreshing services”

systemctl restart httpd

systemctl restart mariadb

echo “Installation completed !”

继续阅读