使用 python 监控 linux 服务器
每次查看 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()
上传文件
利用 SSHClient 对象的 open_sftp()方法,可以直接返回一个基于当前连接的 sftp 对象,可以进行文件的上传等操作.上传参数,必须包含文件全路径;
版权声明: 本文为 InfoQ 作者【技能实验室】的原创文章。
原文链接:【http://xie.infoq.cn/article/0c2d52a85aee43525fdb561c3】。文章转载请联系作者。
评论