1. 程式人生 > >lamp環境加glusterfs存儲集群自動化監控自動修復python腳本

lamp環境加glusterfs存儲集群自動化監控自動修復python腳本

bin lam ESS password tde app null sets grep

#!/usr/bin/python
#coding:utf-8
import os
import sys
import re
import paramiko
import commands
import time
import datetime

def apache_connect_perform(ip,command):
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(ip,username=‘gluster_zabbix‘,password=‘gluster‘)

stdin,stdout,stdeer = client.exec_command(command)
global result
result = stdout.read()

print stdout.read()

print stdeer.read()

client.close()

#apache_connect_perform()

def apache_info_write(info):
with open(‘/opt/scripts/apache-stop.log‘,‘a‘) as f:
f.write(str(info) + ‘\n‘)

if name == ‘main‘:
command_apache_status = "sudo su -c ‘/etc/init.d/apache2 status|grep running|wc -l‘ -"

command_apache_restart = "sudo su -c ‘service apache2 restart‘ -"
command_nginx_reload = "setsid script -c ‘sudo nginx -s reload‘ /dev/null"
command_apache_mount_check = "df -h|grep ‘/app‘|wc -l"
command_apache_mount = "sudo su -c ‘mount -a‘ -"
command_apache_umount = "sudo su -c ‘umount /app‘ -"
apache_list = [‘10.133.72.116‘,‘10.133.72.118‘]
nginx_list = [‘10.133.72.110‘,‘10.133.72.111‘]
for ip in apache_list:
apache_connect_perform(ip,command_apache_status)

print result,ip

    if int(result) != 1:
        info_apache_stop = "%s, %s apache is not running"%(datetime.datetime.now(),ip)
        apache_info_write(info_apache_stop)
        try:
            apache_connect_perform(ip,command_apache_restart)
        except Exception as a:
            apache_info_write(a)

print result

        time.sleep(3)
        apache_connect_perform(ip,command_apache_status)
        if int(result) != 1:
            info_apache_stop_again = "%s ,%s apache restart fail"%(datetime.datetime.now(),ip)
            apache_info_write(info_apache_stop_again)
            for ip_nginx in nginx_list:
                command_nginx_zhushi = "grep %s /etc/nginx/conf.d/panda.saicmotor.com.conf|grep ‘#‘|wc -l"%ip
                apache_connect_perform(ip_nginx,command_nginx_zhushi)
                if int(result) == 0:
                    new_dst = "‘s/server %s/#&/‘"%ip
                    dst = ["sed","-i",new_dst,"/etc/nginx/conf.d/panda.saicmotor.com.conf"]
                    command_nginx_apache_stop = " ".join(dst)

                    new_command = ["sudo su -c",‘"‘,command_nginx_apache_stop,‘"‘,"-"]
                    new_command_split = " ".join(new_command)
                    apache_connect_perform(ip_nginx,new_command_split)
                    time.sleep(2)
                    apache_connect_perform(ip_nginx,command_nginx_reload)
                else:
                    pass

        else:
            info_apache_restart_sucess = "%s,%s apache now is rerunning now"%(datetime.datetime.now(),ip)
            apache_info_write(info_apache_restart_sucess)
    else:

print datetime.datetime.now(), "%s apache is running"%ip

        apache_connect_perform(ip,command_apache_mount_check)
        if int(result) == 1:
            for ip_nginx_zhushi in nginx_list:

print datetime.datetime.now(),"%s apache mount is already now"%ip

                command_nginx_zhushi = "grep %s /etc/nginx/conf.d/panda.saicmotor.com.conf|grep ‘#‘|wc -l"%ip
                            apache_connect_perform(ip_nginx_zhushi,command_nginx_zhushi)
                            if int(result) == 2:
                    new_dst = "‘/%s/s/#//g‘"%ip
                                        dst = ["sed","-i",new_dst,"/etc/nginx/conf.d/panda.saicmotor.com.conf"]
                                    command_nginx_apache_stop = " ".join(dst)

                                        new_command = ["sudo su -c",‘"‘,command_nginx_apache_stop,‘"‘,"-"]
                                        new_command_split = " ".join(new_command)
                                        apache_connect_perform(ip_nginx_zhushi,new_command_split)
                                        time.sleep(2)
                                        apache_connect_perform(ip_nginx_zhushi,command_nginx_reload)

        else:

print "not mount"

            info_app_mount = "%s ,%s apache is not mount now"%(datetime.datetime.now(),ip)
            apache_info_write(info_app_mount)
            try:
                apache_connect_perform(ip,command_apache_umount)
                time.sleep(4)
                apache_connect_perform(ip,command_apache_mount)
            except Exception as b:
                apache_info_write(b)
            time.sleep(2)
            apache_connect_perform(ip,command_apache_mount_check)
            if int(result) == 1:
                info_remount = "%s,%s apache is remounting now"%(datetime.datetime.now(),ip)
                apache_info_write(info_remount)
            else:
                info_mount_fail = "%s ,%s apache is remount fail"%(datetime.datetime.now(),ip)
                apache_info_write(info_mount_fail)
                for ip_nginx1 in nginx_list:
                    command_nginx_zhushi = "grep %s /etc/nginx/conf.d/panda.saicmotor.com.conf|grep ‘#‘|wc -l"%ip
                                        apache_connect_perform(ip_nginx1,command_nginx_zhushi)
                                        if int(result) == 0:
                        new_dst = "‘s/server %s/#&/‘"%ip
                        dst = ["sed","-i",new_dst,"/etc/nginx/conf.d/panda.saicmotor.com.conf"]
                        command_nginx_apache_stop = " ".join(dst)

                        new_command = ["sudo su -c",‘"‘,command_nginx_apache_stop,‘"‘,"-"]
                        new_command_split = " ".join(new_command)
                        apache_connect_perform(ip_nginx1,new_command_split)

                        time.sleep(2)
                        apache_connect_perform(ip_nginx1,command_nginx_reload)
                    else:
                        pass

lamp環境加glusterfs存儲集群自動化監控自動修復python腳本