使用python监控linux服务器

332 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第19天,点击查看活动详情

每次查看linux服务器的状态,都需要在终端通过ssh登录到服务器上,执行shell命令查看服务器信息; 这种操作比较重复,python中也有相应的开源库实现通过代码实现这些操作;

paramiko库介绍

使用Paramiko可以在Python代码中直接使用SSH协议对远程服务器执行操作,而不是通过ssh命令对远程服务器进行操作。

paramiko包含两个核心组件:SSHClient和SFTPClient。

SSHClient的作用类似于Linux的ssh命令,是对SSH会话的封装,该类封装了传输(Transport),通道(Channel)及SFTPClient建立的方法(open_sftp),通常用于执行远程命令。 SFTPClient的作用类似与Linux的sftp命令,是对SFTP客户端的封装,用以实现远程文件操作,如文件上传、下载、修改文件权限等操作。

安装paramiko

安装方式推荐有很多种,推荐使用pip;

pip 是 Python 的包安装程序。其实,pip 就是 Python 标准库(The Python Standard Library)中的一个包,只是这个包比较特殊,用它可以来管理 Python 标准库(The Python Standard Library)中其他的包。pip 是一个命令行程序。 安装 pip 后,会向系统添加一个 pip 命令,该命令可以从命令提示符运行。

安装pip:

  • 安装python; 这个是必须安装的;

  • 下载pip:

    官网地址:pypi.org/project/pip…; 下载完毕后,解压

  • 打开命令行窗口,进入到pip解压后的目录;执行代码

    python3 setup.py install
    进行安装, 安装完成后,将pip加入到系统环境变量中

  • 验证 打开命令行窗口,输入pip list 或者pip3 list 在这里插入图片描述

以上只针对于windows系统,其他系统也可以参考;

  • 使用pip安装paramiko: 打开命令行窗口,输入执行以下代码,并回车

    pip install paramiko

    等待提示第三库安装成功既可;

paramiko简单使用

  • 使用paramiko登录服务器 首先定义一个host,登录用户,密码等参数 import search_str pwd = search_str.password user = search_str.username hostname = search_str.hostname 实例化SSHClient client = paramiko.SSHClient() 自动添加策略 client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 连接SSH服务端,以用户名和密码进行认证 client.connect(hostname=hostname, port=22, username=user, password=pwd) 以上代码实现了服务器的登录;

继续执行以下代码,测试是否登录成功 打开一个Channel并执行命令 stdin, stdout, stderr = client.exec_command('df -h ') 打印执行结果 print(stdout.read().decode('utf-8'))

  • 获取服务器信息

获取服务器信息,主要靠登录服务器,给服务发执行命令; 如:

获取内存信息cat /proc/meminfo
获取cpu信息cat /proc/cpuinfo
端口监控命令netstat -tpln

通过实例化客户端后,调用客户端的exec_command方法,在服务器上执行相应命令,获取返回信息;

stdout = client.exec_command("cat /proc/meminfo", )[1] content = stdout.readlines()

  • 上传文件
def uploadFile(file):
    sftp = client.open_sftp()
    sftp.put(localpath=file,remotepath=file)

利用SSHClient对象的open_sftp()方法,可以直接返回一个基于当前连接的sftp对象,可以进行文件的上传等操作. 上传参数,必须包含文件全路径;