自动化运维 python 批量监控服务器_Python 运维自动化之服务器信息采集

1 deftest2():2 fnull = open(os.devnull, 'w')3 return1 = subprocess.call('ping 127.0.0.1 -n 1', shell=True, stdout=fnull, stderr=fnull)4 rt = (return1 ==0)5 ifrt:6 print(28)7 else:8 print(30)9 returnrt10

11 def sh(command): #命令行获取硬盘信息

12 p = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)13 result = p.stdout.read().decode('gbk')14 returnresult15 defsh_receive():16 disk_c = ''

17 usedg_c =018 hardDisk_c ={}19 try: #把 try提到for循环下。20 if os.name == 'nt':21 disks = sh("wmic logicaldisk get deviceid").split('\r\r\n')[1:-2]22 for disk indisks:23 ifdisk.strip():24 res = sh('fsutil volume diskfree %s' % disk).split('\r\n')[:-2]25 free = int(res[0].split(':')[1])26 all_bit = int(res[1].split(':')[1])27 total = round(all_bit / 1024 / 1024, 2) #mb

28 totalg = int(total / 1024) #gb

29 used = round((all_bit - free) / 1024 / 1024, 2) #mb

30 usedg = int(used / 1024) #gb

31 Idle = round(free / 1024 / 1024, 2) #mb

32 ram = round(used / total, 2)33 disk_c += "{}GB/{}GB#".format(usedg, totalg) #新加的

34 usedg_c +=Idle35 hardDisk_c[disk.strip()] = {"total": total, "used": used, "Idle": Idle, "ram": ram}36 return(disk_c, usedg_c, hardDisk_c)37 exceptException as e:38 print(e)39 return(disk_c, usedg_c, hardDisk_c)40

41 def netInfo(): #ip网卡信息

42 new_ip ={}43 new_mac ={}44 cache_ip = ""

45 cache_mac = ""

46 dic =psutil.net_if_addrs()47 for adapter indic:48 snicList =dic[adapter]49 mac = False #'无 mac 地址'

50 ipv4 = False #'无 ipv4 地址'

51 ipv6 = '无 ipv6 地址'

52 for snic insnicList:53 if snic.family.name in {'AF_LINK', 'AF_PACKET'}:54 mac =snic.address55 elif snic.family.name == 'AF_INET':56 ipv4 =snic.address57 if ipv4 and ipv4 != '127.0.0.1':58 new_ip[adapter] =str(ipv4)59 cache_ip += '{}#'.format(str(ipv4))60 ifmac:61 if len(mac) == 17:62 new_mac[adapter] =str(mac)63 cache_mac += '{}#'.format(str(mac))64 return(new_ip, new_mac, cache_ip, cache_mac)65 defnetSpeed():66 net2 =psutil.net_io_counters() #pernic=True 可以查看每一个网卡的传输量67 old_bytes_sent = round(net2.bytes_recv / 1024, 2) #kb

68 old_bytes_rcvd = round(net2.bytes_sent / 1024, 2)69 time.sleep(1)70 net3 =psutil.net_io_counters()71 bytes_sent = round(net3.bytes_recv / 1024, 2)72 bytes_rcvd = round(net3.bytes_sent / 1024, 2)73 netSpeedOutgoing = bytes_sent -old_bytes_sent74 netSpeedInComing = bytes_rcvd -old_bytes_rcvd75 return(netSpeedOutgoing, netSpeedInComing)76

77 classServerPicker:78 def __init__(self):79 #网络连接

80 self.onlineStatus =int(test2())81 #CPU 占用率

82 self.cpuUtilization =psutil.cpu_percent(0)83 #总内存,内存使用率,使用内存,剩余内存

84 mem =psutil.virtual_memory()85 #所有单位均为byte字节,1 KB = 1024 bytes,1 MB = 1024 KB,1 GB = 1024 MB

86 #total:内存总大小 percent:已用内存百分比(浮点数) used:已用内存 free:可用内存

87 self.totalRAM = round(mem.total / 1024 / 1024, 2) #mb

88 self.totalRAMg = round(mem.total / 1024 / 1024 / 1024, 2) #gb

89 self.ramUtilization = round(mem.percent, 2)90 self.usedRAM = round(mem.used / 1024 / 1024, 2) #mb

91 self.usedRAMg = round(mem.used / 1024 / 1024 / 1024, 2) #gb

92 self.IdleRAM = round(mem.free / 1024 / 1024, 2) #mb

93 self.IdleRAMg = round(mem.free / 1024 / 1024 / 1024, 2) #gb

94 #硬盘=个数和每个硬盘的总容量、使用容量、和剩余容量及使用率

95 self.disk, self.usedg, self.hardDisk =sh_receive()96 #系统开机时间

97 #powerOnTime=datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")

98 t =int(psutil.boot_time())99 self.powerOnTime =str(datetime.datetime.fromtimestamp(t))100 #系统开机时长

101 self.powerOnDuration =int(time.time())102 ## 获取多网卡MAC地址

103 ## 获取ip地址

104 self.ip, self.mac, self.cache_ip, self.cache_mac =netInfo()105 #网络收发速率

106 self.netSpeedOutgoing, self.netSpeedInComing = netSpeed()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值