写点什么

使用 python 监控 linux 服务器

作者:技能实验室
  • 2022-10-19
    河南
  • 本文字数:1266 字

    阅读完需:约 1 分钟

每次查看 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:

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

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

  • python3 setup.py install

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

  • 验证打开命令行窗口,输入 pip list 或者 pip3 list


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


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

  • pip install paramiko

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

paramiko 简单使用

  • 使用 paramiko 登录服务器首先定义一个 host,登录用户,密码等参数 import search_strpwd = search_str.passworduser = search_str.usernamehostname = search_str.hostname 实例化 SSHClientclient = 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 对象,可以进行文件的上传等操作.上传参数,必须包含文件全路径;

发布于: 刚刚阅读数: 6
用户头像

还未添加个人签名 2022-07-26 加入

还未添加个人简介

评论

发布
暂无评论
使用python监控linux服务器_10月月更_技能实验室_InfoQ写作社区