每次查看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_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对象,可以进行文件的上传等操作.
上传参数,必须包含文件全路径;