天天看点

paramiko使用介绍,Python远程操作Linuxparamiko使用介绍,Python远程操作Linux

paramiko使用介绍,Python远程操作Linux

paramiko是基于Python实现的SSH2远程安全连接,支持认证和秘钥方式。可以实现远程命令执行、文件传输、中间SSH代理等功能。paramiko包含两个核心组件,一个为SSHClient类,另一个是SFTPClient类,下面将详细介绍。

1. 安装paramiko

pip install paramiko
           

2.SSHClient类

SSHClient类是SSH服务会话的高级表示,该类封装了传输(transport)、通道(channel)及SFTPClient的校验、建立的方法,通常用于执行远程命令。

# -*- coding:utf-8 -*-
import paramiko
import os

hostname = ''
username = ''
password = ''
shell = 'ls -l /home'
# paramiko.util.log_to_file('syslogin.log')     # 设置日志输出文件

ssh = paramiko.SSHClient()  # 创建ssh客户端
# ssh.load_system_host_keys()  # 获取客户端host_keys, 若本地无秘钥信息需使用set_missing_host_key_policy函数
# 设置远程连接的主机没有本地主机秘钥或HostKeys对象时的策略。AutoAddPolicy RejectPolicy WarningPolicy
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect(hostname=hostname, username=username, password=password)  # 创建ssh连接
stdin, stdout, stderr = ssh.exec_command(shell)  # 执行命令
print(str(stdout.read(), 'utf8'))  # 打印执行命令结果
ssh.close()  # 关闭ssh连接
           

3.SFTPClient类

SFTPClient作为一个SFTP客户端对象,根据SSH传输协议的sftp会话,实现远程文件操作,比如文件上传、下载、权限、状态等操作。

# -*- coding:utf8 -*-
import paramiko

username = ''
password = ''
hostname = ''
port = 22

try:
    t = paramiko.Transport((hostname, port))
    t.connect(username=username, password=password)  # 认证
    sftp = paramiko.SFTPClient.from_transport(t)  # 创建已连通的SFTP客户端通道

    sftp.put('syslogin.log', '/home/upload/syslogin.log')  # 上传文件
    sftp.rename('/home/upload/syslogin.log', '/home/upload/upload.log')  # 重命名
    print(sftp.stat('/home/upload/upload.log'))  # 打印文件信息
    sftp.get('/home/upload/syslogin.log', 'download.txt')  # 下载文件
    sftp.rmdir('/home/upload/test')  # 删除目录
    sftp.mkdir('/home/upload/test', mode=int('777', 8))  # 创建目录,权限尚有疑问?
    print(sftp.listdir('/home/upload'))  # 打印目录
    t.close()
except Exception as e:
    print(str(e))