python列表统计方法(python利用paramiko模块批量统计服务器的磁盘使用百分比)
python列表统计方法(python利用paramiko模块批量统计服务器的磁盘使用百分比)
最近总是有工程师抱怨磁盘空间满了,帮他们解决问题以后,就想着扫描一下所有机器的磁盘使用情况,提前把快满的给清理一下。下面是一般输出结果:
我的函数实现就是把输出结果进行简单的统计整理:
def get_disk():
with open('server.txt' 'r' encoding='utf-8') as rfile:
servers = rfile.readlines() # 按行读取
for item in servers: # 遍历列表,
d = dict(eval(item)) # 列表中的第一个元素,编写成字典
d.update(username="xxx" password="xxx" port='22') # 第一个元素更新
value_list = []
value_list.append(d['id'])
value_list.append(d['username'])
value_list.append(d['password'])
value_list.append(d['port'])
hostinfo = value_list[0] ' ' value_list[1] ' ' value_list[2] ' ' value_list[3]
hostinfo = hostinfo.strip()
hostip username password port = hostinfo.split(' ')
print(hostip)
SSH = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=hostip port=port username=username password=password)
stdin stdout stderr = ssh.exec_command('df -h')
result = stdout.read().decode('utf-8')
##arr = result.split('\n')
a=analyze(result)
for row in a:
path = row[5] # 路径
use = row[4] # 使用占比
use_number = int(use.replace('%' ''))
if (use_number > 90):
print('磁盘{}路径使用超过{}'.format(path use))
if (path == '/'):
print('磁盘/root使用率为{}'.format( use))
if (path == '/repo'):
print('磁盘{}使用率为{}'.format(path use))
if (path == '/repo-1'):
print('磁盘{}使用率为{}'.format(path use))
ssh.close()
输出格式如下: