服务器间 存活状态,数以千计的服务器存活状态检查

# !/usr/bin/python

# -*- coding: UTF-8 -*-

import commands

import sys

import time

class server_unreache(object):

def __init__(self, ip_list):

self.ip_list = ip_list

#第一次获取无法ping通的服务器列表

def unreachable_ip_list(self):

global unreachable_iplist_one_time

unreachable_iplist_one_time=[]

get_un_iplist_str = "/sbin/fping -u -f {}".format(ip_list)

(status, get_un_iplist) = commands.getstatusoutput(get_un_iplist_str)

for unreach in get_un_iplist.split('\n'):

unreachable_iplist_one_time.append(unreach)

#return unreachable_iplist_one_time

pass

# 对第一次获取无法ping通的服务器列表,在进行3次ping操作,每次操作时间间隔为10秒

def do_3times_fping_unreachable(self):

global unreache_3times

unreache_3times=[]

for j in range(3):

for i in range(len(unreachable_iplist_one_time)):

get_3times_un_iplist_str = "/sbin/fping -u {}".format(unreachable_iplist_one_time[i])

time.sleep(10)

(status, get_3times_un_iplist) = commands.getstatusoutput(get_3times_un_iplist_str)

print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

if status != 0 and get_3times_un_iplist not in unreache_3times:

unreache_3times.append(get_3times_un_iplist)

print("{} times,unreache_3times {}".format(j+1,unreache_3times[i]))

print(unreache_3times)

pass

def do_reboot(self,count=0):

global do_reboot_cmd

do_reboot_cmd="ipmitool -I lanplus -H {} -U UserNmae -P PassWord chassis power status"

for i in range(len(unreache_3times)):

count = count + 1

#print(count)

if count <= 2:

print("do_reboot_ip:{},\n do_reboot_cmd:{}".format(unreache_3times[i],do_reboot_cmd.format(unreache_3times[i].replace('172.','10.'))))

#print("do_reboot_ip", unreache_3times[i])

if __name__ == '__main__':

ip_list = sys.argv[1]

ds=server_unreache(ip_list)

ds.unreachable_ip_list()

ds.do_3times_fping_unreachable()

ds.do_reboot()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值