天天看點

自動化安裝Cacti(1.0.1/2/3)腳本

自動化安裝Cacti(1.0.1/2/3)腳本

一、目的

1.1 監控目的

目前我們已經有zabbix監控系統,但是有客戶需求需要流量報表,是以應此類客戶的需求,部署Cacti流量監控系統,來監控客戶伺服器或交換機端口,為客戶提供流量報表截圖。

1.2 本文目的

快速部署Cacti流量監控系統,為後期相關工程師部署此系統提供借鑒與參考。

二、理論基礎

2.1 相關理論

2.2 拓撲架構

<a href="https://s3.51cto.com/wyfs02/M00/8D/A4/wKiom1ikUQjyLu8kAAHmsN1J2i8325.png" target="_blank"></a>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

<code>#!/bin/bash</code>

<code>#Date 2017/2/14</code>

<code>#mail [email protected]</code>

<code>[ $(</code><code>id</code> <code>-u) != </code><code>"0"</code> <code>] &amp;&amp; </code><code>echo</code> <code>"Error: You must be root to run this script"</code> <code>&amp;&amp; </code><code>exit</code> <code>1</code>

<code>export</code> <code>PATH=</code><code>/usr/local/sbin</code><code>:</code><code>/usr/local/bin</code><code>:</code><code>/sbin</code><code>:</code><code>/bin</code><code>:</code><code>/usr/sbin</code><code>:</code><code>/usr/bin</code>

<code>sed</code> <code>-i </code><code>"s/SELINUX=enforcing/SELINUX=disabled/"</code>  <code>/etc/selinux/config</code>

<code>setenforce 0</code>

<code>which</code>  <code>ntpdate</code>

<code>if</code> <code>[ $? -</code><code>eq</code> <code>0 ];</code><code>then</code>

<code>    </code><code>/usr/sbin/ntpdate</code> <code>time1.aliyun.com</code>

<code>    </code><code>echo</code> <code>"*/5 * * * * /usr/sbin/ntpdate -s time1.aliyun.com"</code><code>&gt;&gt;</code><code>/var/spool/cron/root</code>   

<code>else</code>

<code>    </code><code>yum </code><code>install</code> <code>ntpdate -y</code>

<code>fi</code>

<code>clear</code>

<code>echo</code> <code>"####################################################"</code>

<code>echo</code> <code>"#       Auto Install Cacti.                       ##"</code>

<code>echo</code> <code>"#       Press Ctrl + C to cancel                  ##"</code>

<code>echo</code> <code>"#       Any key to continue                       ##"</code>

<code>echo</code> <code>"(1) Install Cacti-1.0.1"</code>

<code>echo</code> <code>"(2) Install Cacti-1.0.2"</code>

<code>echo</code> <code>"(3)Install  Cacti-1.0.3"</code>

<code>echo</code> <code>"(4) EXIT"</code>

<code>read</code> <code>-p </code><code>"Please input your choice:"</code> <code>NUM</code>

<code>case</code> <code>$NUM </code><code>in</code> 

<code>1)</code>

<code>    </code><code>URL=</code><code>"http://www.cacti.net/downloads/cacti-1.0.1.tar.gz"</code>

<code>    </code><code>VER=cacti-1.0.1</code>

<code>;;</code>

<code>2)</code>

<code>    </code><code>URL=</code><code>"http://www.cacti.net/downloads/cacti-1.0.2.tar.gz"</code>

<code>    </code><code>VER=cacti-1.0.2</code>

<code>3)</code>

<code>    </code><code>URL=</code><code>"http://www.cacti.net/downloads/cacti-1.0.3.tar.gz"</code>

<code>    </code><code>VER=cacti-1.0.3</code>

<code>4)</code>

<code>    </code><code>echo</code> <code>-e </code><code>"\033[41;37m You choice channel! \033[0m"</code> <code>&amp;&amp; </code><code>exit</code> <code>0</code>

<code>*)</code>

<code>    </code><code>echo</code> <code>-e </code><code>"\033[41;37m Input Error! Place input{1|2|3} \033[0m"</code> <code>&amp;&amp; </code><code>exit</code> <code>1</code>

<code>esac</code>

<code>echo</code> <code>-e </code><code>"\033[32m You choice install $VER.Install\033[0m"</code>

<code>echo</code> <code>-e </code><code>"\033[5m Press any key to start install $VER... \033[0m"</code>

<code>read</code> <code>-n 1</code>

<code>################################################################</code>

<code>TDIR=</code><code>/tools</code>

<code>IP=`</code><code>ifconfig</code> <code>eth0 | </code><code>grep</code> <code>"inet addr"</code> <code>| </code><code>awk</code> <code>-F</code><code>"[: ]+"</code> <code>'{print $4}'</code><code>`</code>

<code>yum remove php* -y</code>

<code>rpm -Uvh http:</code><code>//mirror</code><code>.webtatic.com</code><code>/yum/el6/latest</code><code>.rpm</code>

<code>ls</code> <code>/etc/yum</code><code>.repos.d</code><code>/webtatic</code><code>.repo</code>

<code>    </code><code>yum -y </code><code>install</code> <code>`yum list|</code><code>grep</code> <code>php55w|</code><code>awk</code> <code>'{printf ("%s ",$1)}'</code><code>` --skip-broken</code>

<code>service php-fpm start </code><code>/tmp/php-install</code><code>.log 2&gt;&amp;1</code>

<code>STAT=`</code><code>echo</code> <code>$?`</code>

<code>PORT=`</code><code>netstat</code> <code>-lntup|</code><code>grep</code> <code>php-fpm|</code><code>wc</code> <code>-l`</code>

<code>if</code> <code>[ $STAT -</code><code>eq</code> <code>0 ] &amp;&amp; [ $PORT -</code><code>eq</code> <code>1 ];</code><code>then</code>

<code>    </code><code>echo</code> <code>-e </code><code>"\033[32m PHP is install success! \033[0m"</code>

<code>    </code><code>echo</code> <code>-e </code><code>"\033[32m PHP install file.please check /tmp/php-install.log \033[0m"</code>

<code>############################################################</code>

<code>yum </code><code>install</code> <code>httpd net-snmp net-snmp-devel net-snmp-utils rrdtool -y</code>

<code>if</code> <code>[ -d </code><code>/var/www/html</code> <code>];</code><code>then</code>

<code>    </code><code>cd</code> <code>/var/www/html</code>

<code>    </code><code>mkdir</code> <code>-p </code><code>/var/www/html</code> <code>&amp;&amp; </code><code>cd</code> <code>/var/www/html</code>

<code>wget -c -O </code><code>/var/www/html/</code><code>$VER.</code><code>tar</code><code>.gz  http:</code><code>//www</code><code>.cacti.net</code><code>/downloads/</code><code>$VER.</code><code>tar</code><code>.gz</code>

<code>tar</code> <code>-zxvf $VER.</code><code>tar</code><code>.gz</code>

<code>mv</code> <code>$VER cacti</code>

<code>cd</code> <code>cacti</code>

<code>chown</code> <code>-R apache.root *</code>

<code>useradd</code> <code>cacti</code>

<code>echo</code> <code>"cacti"</code> <code>| </code><code>passwd</code> <code>--stdin cacti</code>

<code>echo</code> <code>"*/1 * * * * /usr/bin/php /var/www/html/cacti/poller.php &gt;/dev/null 2&gt;&amp;1"</code><code>&gt;&gt;</code><code>/var/spool/cron/root</code>

<code>service httpd start </code>

<code>chkconfig httpd on </code>

<code>###################################################################</code>

<code>SNMPFILE=</code><code>/etc/snmp/snmpd</code><code>.conf</code>

<code>if</code> <code>[ -f </code><code>"$SNMPFILE"</code> <code>]</code>

<code>        </code><code>then</code>

<code>        </code><code>cp</code> <code>$SNMPFILE </code><code>/etc/snmp/snmpd</code><code>.conf.bak</code>

<code>cat</code> <code>&gt; $SNMPFILE &lt;&lt; EOF</code>

<code>com2sec notConfigUser  default       public</code>

<code>group   notConfigGroup v1           notConfigUser</code>

<code>group   notConfigGroup v2c           notConfigUser</code>

<code>view    systemview    included   .1</code>

<code>view    systemview    included   .1.3.6.1.2.1.1</code>

<code>view    systemview    included   .1.3.6.1.2.1.25.1.1</code>

<code>access  notConfigGroup </code><code>""</code>      <code>any       noauth    exact  all  none none</code>

<code>view all    included  .1                               80</code>

<code>syslocation Unknown (edit </code><code>/etc/snmp/snmpd</code><code>.conf)</code>

<code>syscontact Root &lt;root@localhost&gt; (configure </code><code>/etc/snmp/snmp</code><code>.</code><code>local</code><code>.conf)</code>

<code>dontLogTCPWrappersConnects </code><code>yes</code>

<code>proc mountd</code>

<code>proc ntalkd 4</code>

<code>nstall httpd mysql-server php php-mysql php-snmp mysql-devel httpd-devel net-snmp net-snmp-devel</code>

<code> </code><code>net-snmp-utils rrdtoolproc senmail 10 1</code>

<code>exec</code> <code>echotest </code><code>/bin/echo</code> <code>hello world</code>

<code>disk / 10000</code>

<code>EOF</code>

<code>###############################################################</code>

<code>rpm -ivh http:</code><code>//repo</code><code>.mysql.com</code><code>//mysql57-community-release-el6-8</code><code>.noarch.rpm</code>

<code>if</code> <code>[ -d </code><code>/scripts</code> <code>];</code><code>then</code>

<code>    </code><code>cd</code> <code>/scripts</code>

<code>    </code><code>/bin/mkdir</code> <code>/scripts</code> <code>&amp;&amp; </code><code>cd</code> <code>/scripts</code>

<code>wget -r -np -nd -l1 -A.rpm http:</code><code>//101</code><code>.227.67.205</code><code>/share/MySQL5</code><code>.7/</code>

<code>yum </code><code>install</code> <code>mysql-community* -y</code>

<code>chkconfig mysqld on</code>

<code>service mysqld start</code>

<code>SQLPWD=`</code><code>grep</code> <code>'temporary password'</code> <code>/var/log/mysqld</code><code>.log|</code><code>cut</code> <code>-d</code><code>" "</code> <code>-f11|</code><code>sed</code> <code>s/[[:space:]]</code><code>//g</code><code>`</code>

<code>SQLNEW=</code><code>"WWW.51idc.com"</code>

<code>echo</code> <code>$SQLNEW</code>

<code>mysql -uroot </code><code>"-p$SQLPWD"</code> <code>--connect-expired-password -e </code><code>"alter user 'root'@'localhost' identified by \""</code><code>$SQLNEW</code><code>"\";"</code>

<code>mysql -uroot </code><code>"-p$SQLNEW"</code> <code>-e </code><code>"create database cacti character set utf8;"</code>

<code>mysql -uroot </code><code>"-p$SQLNEW"</code> <code>cacti&lt;</code><code>/var/www/html/cacti/cacti</code><code>.sql</code>

<code>mysql -uroot </code><code>"-p$SQLNEW"</code> <code>-e </code><code>"CREATE USER 'cacti'@'localhost' IDENTIFIEDBY \""</code><code>$SQLNEW</code><code>"\";"</code>

<code>mysql -uroot </code><code>"-p$SQLNEW"</code> <code>-e </code><code>"grant all privileges on cacti.* to cacti@'localhost' identified by \""</code><code>$SQLNEW</code><code>"\";"</code>

<code>mysql -uroot </code><code>"-p$SQLNEW"</code> <code>-e </code><code>"grant select on mysql.time_zone_name to 'cacti'@'localhost';"</code>

<code>mysql -uroot </code><code>"-p$SQLNEW"</code> <code>-e </code><code>"flush privileges;"</code>

<code>/usr/bin/mysql_tzinfo_to_sql</code> <code>/usr/share/zoneinfo</code><code>|mysql -uroot -p</code><code>"$SQLNEW"</code> <code>mysql</code>

<code>cat</code><code>&gt;&gt;</code><code>/etc/my</code><code>.cnf&lt;&lt;EOF</code>

<code>max_heap_table_size=100M</code>

<code>max_allowed_packet=16777216</code>

<code>tmp_table_size=64M</code>

<code>join_buffer_size=64M</code>

<code>innodb_buffer_pool_size=458M</code>

<code>innodb_doublewrite=OFF</code>

<code>innodb_flush_log_at_timeout=4</code>

<code>innodb_read_io_threads=32</code>

<code>innodb_write_io_threads=16</code>

<code>PHPCONF=</code><code>/var/www/html/cacti/include/config</code><code>.php</code>

<code>if</code> <code>[ -f $PHPCONF ];</code><code>then</code>

<code>cat</code> <code>&gt;$PHPCONF&lt;&lt;EOF</code>

<code>&lt;?php</code>

<code>\$database_type = </code><code>"mysql"</code><code>;</code>

<code>\$database_default = </code><code>"cacti"</code><code>;</code>

<code>\$database_hostname = </code><code>"localhost"</code><code>;</code>

<code>\$database_username = </code><code>"cacti"</code><code>;</code>

<code>\$database_password = </code><code>"$SQLNEW"</code><code>;</code>

<code>\$database_port = </code><code>"3306"</code><code>;</code>

<code>?&gt;</code>

<code>service mysqld restart</code>

<code>#############################################################</code>

<code>/etc/init</code><code>.d</code><code>/iptables</code> <code>status &gt;</code><code>/dev/null</code> <code>2&gt;&amp;1</code>

<code>    </code><code>iptables -I INPUT -p tcp --dport 80 -j ACCEPT &amp;&amp;</code>

<code>#iptables -I INPUT -p tcp --dport 3306 -j ACCEPT &amp;&amp; </code>

<code>    </code><code>service iptables save &gt;</code><code>/dev/null</code> <code>2&gt;&amp;1</code>

<code>    </code><code>/etc/init</code><code>.d</code><code>/iptables</code> <code>restart</code>

<code>    </code><code>echo</code> <code>-e </code><code>"\033[32m iptables is stopd\033[0m"</code>

<code>echo</code> <code>-e </code><code>"\033[42;37m MySql Username:root Password:$SQLNEW \033[0m"</code>

<code>echo</code> <code>-e </code><code>"\033[42;37m URL:http://$IP/cacti \033[0m"</code>

<code>echo</code> <code>-e </code><code>"\033[42;37m $VER is Install Success,Username:Admin Password:admin \033[0m"</code>

本文轉自 KaliArch 51CTO部落格,原文連結:http://blog.51cto.com/kaliarch/1898212,如需轉載請自行聯系原作者