- #!/usr/bin/python
- #
- import os,shutil,urllib,MySQLdb,sys,subprocess
- cacti = ['cacti-0.8.7g.tar.gz','cacti-plugin-0.8.7g-PA-v2.8.tar.gz','rrdtool-1.4.4.tar.gz']
- change = ''.join(cacti[:1])
- rrd = ''.join(cacti[2])
- pl = ''.join(cacti[1])
- #If install files not exists,downloading now.
- for path in cacti:
- if not os.path.exists(path):
- web = 'http://xxx.xxx.com/shell/'+path
- print '"%s" Downloading ......'%(path)
- web_file = urllib.urlopen(web)
- local = open(path,'wb').write(web_file.read())
- web_file.close()
- www = '/var/www/cacti'#Cacti directory
- command = 'tar -zxf %s'
- #Decompress files
- for path in cacti:
- os.system(command % path)
- #Configure "Catci"
- if os.path.exists(www):
- shutil.rmtree(www)
- print 'Delete %s directiory'%(www)
- if not os.path.exists(www):
- shutil.move(change[0:12],www)
- os.system('chmod -R 775 %s'%www)
- print 'Create %s directiory'%(www)
- #Mysql datebase
- try:
- conn = MySQLdb.connect(host='localhost',user='root',passwd='')
- except Exception,e:
- print e
- sys.exit()
- cursor = conn.cursor()
- if os.path.isdir('/var/lib/mysql/cacti'):
- sql = "drop database cacti;create database cacti;grant all on cacti.* to cacti@localhost identified by '123456';flush privileges;"
- cursor.execute(sql)
- else:
- sql = "create database cacti;grant all on cacti.* to cacti@localhost identified by '123456';flush privileges;"
- cursor.execute(sql)
- cursor.close()
- conn.close()
- #Command
- com = "./configure --prefix='/usr/local/rrdtool' 1>/dev/null;make -j10 1>/dev/null;make install 1>/dev/null"
- #RRDTOOL
- if not os.path.isdir('/usr/local/rrdtool'):
- os.chdir(rrd[:13])
- os.system(com)
- #cacti-plugin
- #if not os.path.isfile(www + os.sep + 'pa.sql'):
- if not os.path.isdir(pl[:13]+'arch'):
- os.chdir('../' + pl[:13] + 'arch')
- shutil.copy('pa.sql',www)
- shutil.copy('cacti-plugin-0.8.7g-PA-v2.8.diff',www)
- os.chdir(www)
- os.system("patch -p1 -N <cacti-plugin-0.8.7g-PA-v2.8.diff;mysql -uroot -p cacti<pa.sql")
- os.system("mysql -uroot -p cacti<cacti.sql")
- else:
- os.chdir(pl[:13] + 'arch')
- shutil.copy('pa.sql',www)
- shutil.copy('cacti-plugin-0.8.7g-PA-v2.8.diff',www)
- os.chdir(www)
- os.system("patch -p1 -N <cacti-plugin-0.8.7g-PA-v2.8.diff;mysql -uroot -p cacti<pa.sql")
- os.system("mysql -uroot -p cacti<cacti.sql")
- #net-snmp
- if not os.path.isfile('/usr/sbin/snmpd'):
- os.system('yum install -y install net-snmp*')
- os.system('chkconfig --level 35 snmpd on')
- os.system('service snmpd start')
- if not os.path.isfile('/usr/local/bin/rrdtool'):
- os.system('ln -sf /usr/local/rrdtool/bin/rrdtool /usr/local/bin/rrdtool')
- if not os.path.isfile('/usr/bin/php'):
- os.system('ln -sf /usr/local/php/bin/php /usr/bin/php')
- #Crontab
- cron = '/etc/crontab'
- file = open(cron,'rw+')
- phpcron = '*/5 * * * * root php /var/www/cacti/poller.php > /dev/null 2>&1\n'
- for list in file:
- if list == phpcron:
- sys.exit()
- file.write(phpcron)
- file.close
本文转自 ibelieveme 51CTO博客,原文链接:http://blog.51cto.com/skyson/438595,如需转载请自行联系原作者