cacti一键安装脚本V1.1

  1. #!/bin/bash 
  2. #function +++++++++++++cacti auto install scripts+++++++++++++++++++ 
  3. #author itnihao  
  4. #version 1.1  
  5. #date 2012-08-17  v1.0
  6. #date 2012-08-18 v1.1更新增加syslog-ng等内容
  7. #mail itnihao@qq.com  
  8. #转载请注明http://itnihao.blog.51cto.com,谢谢合作 
  9. #source http://code.google.com/p/auto-task-pe/ 
  10.  
  11. green='\e[0;32m'  
  12. red='\e[0;31m'  
  13. blue='\e[0;36m'  
  14. blue1='\e[5;31m'  
  15. NC='\e[0m'  
  16. path_soft=$(pwd) 
  17.  
  18. function base { 
  19.    #rpm -e lrzsz&& yum -y install lrzsz* 
  20.    #[ "$?" != "0" ] && echo "yum is badly,please check" && exit 1 
  21.    for i in  $(rpm -q gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssl-devel bison bison-devel readline readline-devel libmcrypt libmcrypt-devel net-snmp-devel gcc  gcc-c++ apr apr-util postgresql-libs  openssl openssl-devel autoconf automake fiex* libxml* ncurses*  libtool* libxslt libxslt-devel curl* bzip2*  gd gd-devel freetype freetype-devel libpng*|grep 'not installed' | awk '{print $2}')   
  22.    do  
  23.         yum -y  install $i;  
  24.    done  
  25.  
  26.  
  27. function lamp { 
  28. yum -y install httpd mysql-server mysql php* net-snmp*  rrdtool* 
  29. sed -i "s/;date.timezone =/date.timezone = Asia\/Chongqing/g" /etc/php.ini 
  30. #start lamp services 
  31. for  name  in  httpd  mysqld snmpd 
  32.    do 
  33.         service  ${name}  restart 
  34.         chkconfig --add ${name} 
  35.         chkconfig --level 345 ${name} on 
  36.    done 
  37. for name1 in nfslock rpcbind 
  38.    do 
  39.         service  ${name1}  stop 
  40.         chkconfig --del ${name1} 
  41.    done 
  42.    echo  -e "<?php\nphpinfo();\n?>">/var/www/html/test.php 
  43.  
  44. #add php_type 
  45. #echo "AddType application/x-httpd-php .php" >>/etc/httpd/conf/httpd.conf 
  46. #sed -i "s/AddType\ application\/x-gzip\ \.gz\ \.tgz/AddType\ application\/x-gzip\ \.gz\ \.tgz\ AddType\ application\/x-httpd-php\ .php/g" /etc/httpd/conf/httpd.conf 
  47. #sed -i "s/DirectoryIndex\ index.html\ index.html.var/DirectoryIndex\ index.php\ index.html\ index.html.var/g"  /etc/httpd/conf/httpd.conf 
  48.  
  49. #install cacti 
  50. function install_cacti { 
  51. cd  ${path_soft} 
  52. [ ! -e cacti*.tar.gz ]; stats=$?  
  53. [ "$stats" == 0 ] && echo -e "${red} there is not cacti*.tar.gz file${NC}" && wget --no-check-certificate http://www.cacti.net/downloads/cacti-0.8.8a.tar.gz 
  54. tar zxvf cacti*.tar.gz 
  55. cp -rf cacti-0.8.8a  /var/www/html/cacti 
  56. restorecon -R -v '/var/www/html/cacti' 
  57. chown  apache.apache  -R  /var/www/html/cacti/ 
  58. sed -i "s/\$database_username\ =\ \"cactiuser\"/\$database_username\ =\ \"cacti\"/g" /var/www/html/cacti/include/config.php   
  59. sed -i "s/\$database_password\ =\ \"cactiuser\"/\$database_password\ =\ \"cacti123\"/g" /var/www/html/cacti/include/config.php 
  60.  
  61. #database password setting 
  62. mysqladmin  -uroot password 'itnihao' 
  63. mysqladmin  -uroot  -pitnihao  flush-privileges 
  64. mysqladmin  -uroot  -pitnihao  create cacti 
  65. mysql -uroot  -pitnihao  cacti </var/www/html/cacti/cacti.sql 
  66. mysql -uroot  -pitnihao  -e "grant all on cacti.* to cacti@localhost identified by 'cacti123'" 
  67. mysql -uroot  -pitnihao  -e "FLUSH PRIVILEGES" 
  68.  
  69. #add crontab 
  70. chmod 777 -R  /var/www/html/cacti/rra 
  71. chmod 777 -R  /var/www/html/cacti/log 
  72. echo "*/5 * * * * /usr/bin/php /var/www/html/cacti/poller.php > /dev/null 2&1" >/tmp/cron.cacti 
  73. crontab -l|sort|uniq >>  /tmp/cron.cacti 
  74. crontab -uroot /tmp/cron.cacti && rm -rf /tmp/cron.cacti 
  75. #setsebool -P httpd_unified=1 
  76. #chcon -t httpd_sys_content_t /usr/local/rrdtool -R 
  77. echo -e "${green}++++++++++++++++++++++++cacti installed OK,path is http://ip/cacti++++++++++++++++++++${NC}" 
  78.  
  79.  
  80. function plugin { 
  81. cd     ${path_soft}/plugin 
  82. [ ! -e cacti-spine-0.8.8a.tar.gz ]; stats=$? 
  83. [ "$stats" == 0 ] && echo -e "${red} there is not cacti-spine*.tar.gz file${NC}" && wget --no-check-certificate  http://www.cacti.net/downloads/spine/cacti-spine-0.8.8a.tar.gz 
  84. tar zxvf  cacti-spine-0.8.8a.tar.gz 
  85. cd cacti-spine-0.8.8a 
  86. ./configure 
  87. make && make install 
  88. cd ../ 
  89. mv /usr/local/spine/etc/spine.conf.dist /usr/local/spine/etc/spine.conf 
  90. #wget http://docs.cacti.net/_media/plugin:docs-v0.4-1.tgz 
  91. #wget http://docs.cacti.net/_media/plugin:boost-v5.0-1.tgz 
  92. #wget http://docs.cacti.net/_media/plugin:discovery-v1.5-1.tgz 
  93. #wget http://docs.cacti.net/_media/plugin:monitor-v1.2-1.tgz 
  94. #wget http://docs.cacti.net/_media/plugin:monitor-v1.3-1.tgz 
  95. #wget http://docs.cacti.net/_media/plugin:mobile-latest.tgz 
  96. #wget http://docs.cacti.net/_media/plugin:settings-v0.7-1.tgz 
  97. #wget http://docs.cacti.net/_media/plugin:syslog-v1.22-2.tgz 
  98. #wget http://docs.cacti.net/_media/plugin:thold-v0.4.9-3.tgz 
  99. #wget http://docs.cacti.net/_media/plugin:clog-v1.7-1.tgz 
  100. #wget http://docs.cacti.net/_media/plugin:ntop-v0.2-1.tgz 
  101. #wget http://docs.cacti.net/_media/plugin:domains-v0.1-1.tgz 
  102. #wget http://docs.cacti.net/_media/userplugin:manage-0.6.2.zip 
  103. #wget http://wotsit.thingy.com/haj/cacti/quicktree-0.2.zip 
  104. #wget http://www.network-weathermap.com/files/php-weathermap-0.97a.zip 
  105. #wget http://docs.cacti.net/_media/plugin:timeshift-latest.zip  
  106. #wget http://docs.cacti.net/_media/plugin:loginmod-latest.tgz 
  107. #wget http://docs.cacti.net/_media/plugin:realtime-v0.5-2.tgz 
  108.   
  109.   for name in `ls|sed -e "s/plugin://g" -e "s/.tgz//g"` 
  110.   do 
  111.       mv plugin:${name}.tgz ${name}.tar.gz 
  112.   done 
  113.  
  114.   for name1 in boost discovery docs domains loginmod-latest manage monitor quicktree realtime settings syslog thold timeshift weathermap 
  115.   do 
  116.      tar zxvf ${name1}*.tar.gz 
  117.      mv ${name1} /var/www/html/cacti/plugins/ 
  118.   done 
  119.   chown apache.apache -R /var/www/html/cacti/plugins 
  120.  
  121. function config_apache { 
  122. cat >> /etc/httpd/conf/httpd.conf << EOF 
  123. Alias /cacti "/var/www/html/cacti" 
  124. <Directory "/var/www/html/cacti"> 
  125.    Options -Indexes MultiViews -FollowSymLinks 
  126.    DirectoryIndex index.php 
  127.    AllowOverride None 
  128.    Order allow,deny 
  129.    Allow from all 
  130. </Directory> 
  131. <Directory /var/www/html/cacti/plugin/weathermap> 
  132.    <Files editor.php> 
  133.             Order Deny,Allow 
  134.             Deny from all 
  135.             Allow from 127.0.0.1 
  136.         </Files> 
  137. </Directory>  
  138. EOF 
  139.  
  140. function syslog { 
  141. #syslog_mysql 
  142. yum install -y rsyslog rsyslog-mysql  
  143. cat >> /etc/rsyslog.conf << EOF 
  144. $ModLoad imudp.so 
  145. $UDPServerRun 514 
  146. $ModLoad ommysql 
  147. $template cacti_syslog,"INSERT INTO syslog_incoming(facility, priority, date, time, host, message) values (%syslogfacility%,  
  148. %syslogpriority%,  '%timereported:::date-mysql%', '%timereported:::date-mysql%', '%HOSTNAME%', '%msg%')", SQL 
  149. *.*             >localhost,syslog,cacti_log,cacti_log_pass;cacti_syslog 
  150. EOF 
  151. sed -i "s/SYSLOGD_OPTIONS=\"-c 4\"/SYSLOGD_OPTIONS=\"-c 4 -r -m 1\"/g"  /etc/sysconfig/rsyslog  
  152. chkconfig rsyslog on 
  153. service rsyslog restart 
  154.  
  155. #syslog_database  
  156. mysqladmin  -uroot  -pitnihao  create syslog 
  157. mysql -uroot  -pitnihao  syslog </var/www/html/cacti/plugins/syslog/syslog.sql 
  158. mysql -uroot  -pitnihao  -e "grant all on syslog.* to cacti_log@localhost identified by 'cacti_log_pass'" 
  159. mysql -uroot  -pitnihao  -e "FLUSH PRIVILEGES" 
  160.  
  161. #cacti_syslog 
  162. sed -i "s/use_cacti_db = true;/use_cacti_db = false;/g" /var/www/html/cacti/plugins/syslog/config.php 
  163. sed -i "s/syslogdb_username = 'cactiuser'/syslogdb_username = 'cacti_log'/g" /var/www/html/cacti/plugins/syslog/config.php 
  164. sed -i "s/syslogdb_password = 'cactiuser'/syslogdb_password = 'cacti_log_pass'/g" /var/www/html/cacti/plugins/syslog/config.php 
  165. #client_syslog or rsyslog 
  166. #echo "*.* @192.168.16.200"  >> /etc/syslog.conf 
  167. #echo "*.* @192.168.16.200"  >> /etc/rsyslog.conf 
  168.  
  169. function syslog_ng { 
  170. service rsyslog stop 
  171. chkconfig --del rsyslog 
  172. service syslog stop 
  173. chkconfig --del syslog 
  174. cd ${path_soft}/syslog 

  175. #############################download#################################### 
  176. #wget wget http://dl.fedoraproject.org/pub/epel/6/x86_64/libnet-1.1.5-1.el6.x86_64.rpm 
  177. #wget http://dl.fedoraproject.org/pub/epel/6/x86_64/eventlog-0.2.12-1.el6.x86_64.rpm 
  178. #wget ftp://fr2.rpmfind.net/linux/epel/6/x86_64/syslog-ng-3.2.5-3.el6.x86_64.rpm 
  179. #wget http://dl.fedoraproject.org/pub/epel/6/x86_64/syslog-ng-libdbi-3.2.5-3.el6.x86_64.rpm 
  180. ######################################################################## 
  181. rpm -ivh libnet-1.1.5-1.el6.x86_64.rpm 
  182. rpm -ivh eventlog-0.2.12-1.el6.x86_64.rpm  
  183. rpm -ivh syslog-ng-3.2.5-3.el6.x86_64.rpm 
  184. rpm -ivh libdbi-0.8.3-3.1.el6.x86_64.rpm 
  185. rpm -ivh syslog-ng-libdbi-3.2.5-3.el6.x86_64.rpm 
  186.  
  187. cat >> /etc/syslog-ng/syslog-ng.conf  << EOF 
  188. source s_rsc { 
  189.                unix-stream("/dev/log"); 
  190.                udp(ip("192.168.16.200") port(514)); 
  191. }; 
  192.  
  193. #destination r_mesg  { file("/var/log/warn");}; 
  194.  
  195. destination d_mysql { 
  196.                     program("mysql -ucacti_log -pcacti_log_pass syslog < /var/log/mysql.pipe"); 
  197.                     pipe("/var/log/mysql.pipe" 
  198.                     template("INSERT INTO syslog_incoming (host, facility, priority, status, date, time, seq, message) VALUES( '\$FULLHOST', '\$FACILITY', '\$PRIORITY', '\$STATUS', '\$YEAR-\$MONTH-\$DAY', '\$HOUR:\$MIN:\$SEC','\$SEQ', '\$MESSAGE' );\n") 
  199.                     template-escape(yes)); 
  200. }; 
  201.  
  202. log { source(s_rsc); destination(d_mysql); }; 
  203. log { source(s_sys); destination(d_mysql); }; 
  204. EOF 
  205.  
  206. function client_config { 
  207. #client syslog-ng,you should install syslog-ng  
  208. cat >> /etc/syslog-ng/syslog-ng.conf  << EOF 
  209. destination d_udp {udp("192.168.16.200" port(514));}; 
  210. log { source(s_sys); destination(d_udp);}; 
  211. EOF 
  212.  
  213. #client_syslog or rsyslog 
  214. #rhel5.X use syslog 
  215. echo "*.* @192.168.16.200"  >> /etc/syslog.conf 
  216. #rhel6.X use rsyslog 
  217. echo "*.* @192.168.16.200"  >> /etc/rsyslog.conf 
  218.  
  219. #clietn snmpd configuration 
  220. sed -i s"/^/#/g" /etc/snmp/snmpd.conf 
  221. cat >> /etc/snmp/snmpd.conf << EOF 
  222. com2sec mynetwork 192.168.16.200 public 
  223. com2sec mynetwork 127.0.0.1 public  
  224. group MyROGroup v2c mynetwork 
  225. access MyROGroup "" any noauth prefix all none none   
  226. view all included .1 80 
  227. EOF 
  228.  
  229. function main { 
  230. base 
  231. lamp 
  232. install_cacti 
  233. plugin 
  234. config_apache 
  235. syslog 
  236. #syslog_ng 
  237. #client_config 
  238.  
  239. main 

配置完成,截图如下

软件包有以下下文件夹和文件

plugin文件夹内内容

syslog文件内容(住e15为多余,本环境用的是el6)

如需其他的软件包,可以用以下链接
  1. #rhel5.X 
  2. #wget http://dl.fedoraproject.org/pub/epel/5/x86_64/eventlog-0.2.12-1.el5.i386.rpm 
  3. #wget http://dl.fedoraproject.org/pub/epel/5/x86_64/eventlog-devel-0.2.12-1.el5.x86_64.rpm 
  4. #wget http://dl.fedoraproject.org/pub/epel/5/x86_64/eventlog-devel-0.2.12-1.el5.i386.rpm 
  5. #wget http://dl.fedoraproject.org/pub/epel/5/x86_64/eventlog-static-0.2.12-1.el5.x86_64.rpm 
  6.  
  7. #wget http://dl.fedoraproject.org/pub/epel/5/x86_64/libnet-1.1.5-1.el5.x86_64.rpm 
  8. #wget http://dl.fedoraproject.org/pub/epel/5/x86_64/libnet-1.1.5-1.el5.i386.rpm 
  9. #wget http://dl.fedoraproject.org/pub/epel/5/x86_64/libnet-devel-1.1.5-1.el5.i386.rpm 
  10. #wget http://dl.fedoraproject.org/pub/epel/5/x86_64/libnet-devel-1.1.5-1.el5.x86_64.rpm 
  11.  
  12. #rhel6.X 
  13. #wget http://dl.fedoraproject.org/pub/epel/6/x86_64/eventlog-0.2.12-1.el6.i686.rpm 
  14. #wget http://dl.fedoraproject.org/pub/epel/6/x86_64/eventlog-0.2.12-1.el6.x86_64.rpm 
  15. #wget http://dl.fedoraproject.org/pub/epel/6/x86_64/eventlog-devel-0.2.12-1.el6.i686.rpm 
  16. #wget http://dl.fedoraproject.org/pub/epel/6/x86_64/eventlog-devel-0.2.12-1.el6.x86_64.rpm 
  17.  
  18. #wget http://dl.fedoraproject.org/pub/epel/6/x86_64/libnet-1.1.5-1.el6.i686.rpm 
  19. #wget http://dl.fedoraproject.org/pub/epel/6/x86_64/libnet-1.1.5-1.el6.x86_64.rpm 
  20. #wget http://dl.fedoraproject.org/pub/epel/6/x86_64/libnet-devel-1.1.5-1.el6.i686.rpm 
  21. #wget http://dl.fedoraproject.org/pub/epel/6/x86_64/libnet-devel-1.1.5-1.el6.x86_64.rpm 
  22.  
  23. #wget ftp://fr2.rpmfind.net/linux/epel/6/x86_64/syslog-ng-3.2.5-3.el6.x86_64.rpm 
  24. #wget ftp://rpmfind.net/linux/epel/6/i386/syslog-ng-3.2.5-3.el6.i686.rpm 
  25. #wget ftp://rpmfind.net/linux/epel/5/x86_64/syslog-ng-2.1.4-9.el5.x86_64.rpm 
  26. #wget ftp://rpmfind.net/linux/epel/5/i386/syslog-ng-2.1.4-9.el5.i386.rpm 
软件包放http://code.google.com/p/auto-task-pe/  需要的可以去下载 本shell只提供安装方法,具体细节问题后面会写文档。