import paramiko
import psutil
def bytes2human(n):
"""
字节转化成相应容量值
:param n: 字节数
:return:
"""
# 容量单位
symbols = ('K','M','G','T')
prefix = {}
for i, s in enumerate(symbols):
prefix[s] = 1 << ( i + 1 ) * 10
# prefix = {'K': 1024, 'M': 1048576, 'G': 1073741824, 'T': 1099511627776}
for s in reversed(symbols):
if n >= prefix[s]:
value = float(n) / prefix[s]
return '%.1f%s' % (value,s)
return '%sB' % n
class Conn:
def __init__(self, ip, username, password, port=22):
self.ip = ip
self.port = port
self.username = username
self.password = password
def ssh_conn(self):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy)
ssh.connect(self.ip, self.port, self.username, self.password)
return ssh
def check_file(ip, port, username, password):
"""
远程执行命令查看服务器的文件系统使用情况
在linux系统下可以免密,利用秘钥登录
:param ip: 目标机器IP
:param port: 端口号
:param username: 用户名
:param password: 密码
:return:
"""
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy)
ssh.connect(ip, port, username, password)
_, out, _ = ssh.exec_command('df -h;df -i')
ret = out.readlines()
# print(ret)
for line in ret:
if '文件系统' not in line:
line = line.strip().split()
file_num = int(line[4].replace('%', ' '))
file_system = line[5]
# print(file_num,file_system)
if file_num > 60:
print(file_num, file_system)
ssh.close()
def check_file1(ip, username, password):
conn1 = Conn(ip, username, password)
ssh = conn1.ssh_conn()
_, out, _ = ssh.exec_command('df -h;df -i')
ret = out.readlines()
for line in ret:
if '文件系统' not in line:
line = line.strip().split()
file_num = int(line[4].replace('%', ' '))
file_system = line[5]
if file_num > 60:
print(file_num, file_system)
ssh.close()
def check_mem(ip,username,password):
conn = Conn(ip=ip,username=username,password=password)
ssh = conn.ssh_conn()
if __name__ == '__main__':
ret = bytes2human(1024)
print(ret)