python轮流监听多台服务器资源情况

2023-05-03,,

在主动持续监听某台服务器基础上,优化为同时监听多台服务器资源占用情况;

优点:较初版,设备监听范围有了明显提升;

缺点:主动式,轮询方式,实时性较差。

#-*- coding: utf-8 -*-
#!/usr/bin/python '''
用法: sar [ 选项 ] [ <时间间隔> [ <次数> ] ] 主选项和报告:
-b I/O 和传输速率信息状况
-B 分页状况
-d 块设备状况
-I { <中断> | SUM | ALL | XALL } 中断信息状况
-m 电源管理信息状况
-n { <关键词> [,...] | ALL } 网络统计信息
关键词可以是:
DEV 网卡信息统计
EDEV 网卡的错误统计
NFS NFS客户端
NFSD NFS服务器
SOCK Sockets (IPV4套接字)
IP IP流(IPV4)
EIP IP流的错误统计(IPV4)
ICMP ICMP流(IPV4)
EICMP ICMP流的错误统计(IPV4)
TCP TCP流(IPV4)
ETCP TCP流的错误统计(IPV4)
UDP UDP流(IPV4)
SOCK6 Sockets(IPV6套接字)
IP6 IP流(IPV6)
EIP6 IP流的错误统计(IPV6)
ICMP6 ICMP流(IPV6)
EICMP6 ICMP流的错误统计 (IPV6)
UDP6 UDP流(IPV6)
-q 队列长度和平均负载
-r 内存利用率
-R 内存状况
-S 交换空间利用率
-u [ ALL ]
CPU 利用率
-v Kernel table 状况
-w 任务创建与系统转换统计信息
-W 交换信息
-y TTY 设备状况
-o {<文件路径>}
将命令结果以二进制格式存放在指定文件中 ''' import paramiko class Remote_management_WayKind():
def __init__(self,Load_list): self.host_addr= Load_list[0]
self.user_name=Load_list[1]
self.ssh_loadkey=Load_list[2]
self.execmd=Load_list[3] self.back_normal_info='' def Command_Way(self):
#创建SSH连接日志文件
paramiko.util.log_to_file("paramiko666.log")
# 创建SSH对象
ssh_load = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh_load.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh_load.connect(hostname=self.host_addr, port=22, username=self.user_name, password=self.ssh_loadkey)
# 执行命令
stdin, stdout, stderr = ssh_load.exec_command (self.execmd,bufsize=1) #execmd传的参数free也是命令 stderr.channel.set_combine_stderr(stdout) #打开屏幕打印log文件,如果没有便新创建,模式a+为追加模式
log_file = open("message666.log", "a+")
counter=0
while counter<21: self.back_normal_info = stdout.readline()
self.back_normal_info = self.host_addr + str("设备信息----- ") + self.back_normal_info
counter+=1 if len(self.back_normal_info) == 0:
break
print(str(self.back_normal_info.strip())) #写入信息
log_file.writelines(self.back_normal_info) #关闭屏幕打印log文件
log_file.close() # 关闭连接
ssh_load.close() if __name__=='__main__':
Load_list1 = [['IP1','用户名1','用户名1','命令1'],
['IP2','用户名2','用户名2','sar -n DEV 5 -u -r'],
['IP3','用户名3','用户名3','sar -n DEV 5 -u -r']] while True:
for Load_list in Load_list1: Ssh_load=Remote_management_WayKind(Load_list)
Ssh_load.Command_Way()

python轮流监听多台服务器资源情况的相关教程结束。

《python轮流监听多台服务器资源情况.doc》

下载本文的Word格式文档,以方便收藏与打印。