python脚本实现对Linux系统服务器CPU,内存等监控(paramiko,psutil模块的使用)

一:下载模块包

1.paramiko模块

模块作用:
1、通过ssh协议远程执行命令

2、文件上传下载

如果有No module named 'setuptools_rust'报错,先下载setuptools

pip3 install -U pip setuptools

再下载paramiko

pip3 install paramiko

2.psutil模块

模块作用:

psutil(process and system utilities) 是一个跨平台的库,用于在Python中检索有关运行进程和系统利用率(CPU、内存、磁盘、网络、传感器)的信息。

它实现了经典UNIX命令行工具提供的许多功能,如ps、top、iotop、lsof、netstat、ifconfig、free等。

下载依赖包

yum  install gcc  gcc-devel  python3-devel -y

 下载psutil

pip3 install psutil

3.ssh服务免密通道 

生成公私钥

python脚本实现对Linux系统服务器CPU,内存等监控(paramiko,psutil模块的使用)_第1张图片

给服务端发送公钥

python脚本实现对Linux系统服务器CPU,内存等监控(paramiko,psutil模块的使用)_第2张图片

登录效果图 python脚本实现对Linux系统服务器CPU,内存等监控(paramiko,psutil模块的使用)_第3张图片

二:编写脚本

1.psutil模块获取top信息top.py脚本

获取服务器cpu的使用率,内存的使用率,磁盘使用率

#!/usr/bin/python3
# coding=utf-8
import psutil
import datetime

def linux_monitor():
    # cpu的使用率
    cup_per = psutil.cpu_percent()
    # 内存使用率
    mem_per = psutil.virtual_memory().percent
    # 磁盘使用率
    disk_per = psutil.disk_usage('/').percent
    # 网络使用情况  收发多少数据 net.bytes_recv、net.bytes_sent
    net = psutil.net_io_counters()
    # 获取当前系统时间
    current_time = datetime.datetime.now().strftime("%F %T")  
    # 拼接显示
    str = ""
    str+= "|---------time--------|---cpu---|----memory----|----disk----|--------------net-------------|\n"
    str+= "| %s |   %s%%  |    %s%%     |    %s%%   | recv:%.2fMB  sent:%.2fMB |\n" \
              % (current_time, cup_per, mem_per, disk_per, net.bytes_recv/1024/1024, net.bytes_sent/1024/1024)
    print(str)
    
linux_monitor()

 先试试本地效果如图:python脚本实现对Linux系统服务器CPU,内存等监控(paramiko,psutil模块的使用)_第4张图片

 2.paramiko模块远程登录上传脚本文件并执行

#!/usr/bin/python3
# coding=utf-8
import paramiko


# 指定本地的RSA私钥文件
key = paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa')

# 建立连接
trans = paramiko.Transport(('192.168.149.147', 22))
trans.connect(username='root', pkey=key)

# 创建ssh对象,将_transport指定为上面的trans
ssh = paramiko.SSHClient()
ssh._transport = trans

# 创建sftp对象,指定连接的通道
sftp = paramiko.SFTPClient.from_transport(trans)

# 上传psut.py文件
sftp.put(localpath='/lianxi/top.py', remotepath='/root/p.py')

# 添加可执行权限,运行脚本
ssh.exec_command('chmod +x p.py')
stdin, stdout, stderr = ssh.exec_command('./p.py')
print(stdout.read().decode())
stdin, stdout, stderr = ssh.exec_command('hostname')
print(stdout.read().decode())

3.常见报错与结果展示 

运行出错

python脚本实现对Linux系统服务器CPU,内存等监控(paramiko,psutil模块的使用)_第5张图片

 crytography版本过高,导致密码无法识别,卸载它

pip3 uninstall cryptography

 下载低版本cryptography

pip3 install -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com  cryptography==36.0.2

编码出错 

 在头部写入编码声明

# conding=utf-8

效果展示:

python脚本实现对Linux系统服务器CPU,内存等监控(paramiko,psutil模块的使用)_第6张图片 

 

你可能感兴趣的:(Linux,服务器,linux,运维,python)