Python之远程控制库paramiko

Posted 程序员唐丁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python之远程控制库paramiko相关的知识,希望对你有一定的参考价值。

一、paramiko简介

Paramiko是一个用于建立SSH2连接(客户端或服务器)的库。重点是使用SSH2作为SSL的替代方案,在python脚本之间建立安全连接。支持所有主要的密码和哈希方法。SFTP客户端和服务器模式也都支持。作者在平时主要用其作为对服务器端的文件和目录的下载和上传操作使用,当然Paramiko也可以远程执行服务器端命令,并返回执行结果。

二、下载安装

pip3 install paramiko 

三、代码实现

1、从服务器端下载文件到本地

import paramiko
#下载文件
def download_file(remoteFile,loaclFile):
    # 实例化一个transport对象
    trans = paramiko.Transport(('192.195.x.xxx', 22))
    # 建立连接
    trans.connect(username='user', password='passwd')
    # 实例化一个 sftp对象,指定连接的通道
    sftp = paramiko.SFTPClient.from_transport(trans)
    # 下载文件
    sftp.get(remotepath=remoteFile, localpath=loaclFile)
    trans.close()

2、从本地上传文件到服务器

import paramiko
#上传文件
def upload_file(loaclFile,remoteFile):
    # 实例化一个transport对象
    trans = paramiko.Transport(('192.195.x.xxx', 22))
    # 建立连接
    trans.connect(username='user', password='passwd')
    # 实例化一个 sftp对象,指定连接的通道
    sftp = paramiko.SFTPClient.from_transport(trans)
    # 上传文件
    sftp.put(localpath=loaclFile, remotepath=remoteFile)
    trans.close()

3、从服务器端下载目录到本地

import paramiko
import re
#下载文件夹
def download_dir(remote_dirPath, loacl_dirPath, type):
    #如果本地目录不存在就创建
    if not os.path.exists(loacl_dirPath):
        os.mkdir(loacl_dirPath)
    reg = r'^\\..*'
    # 实例化一个transport对象
    trans = paramiko.Transport(('192.195.x.xxx', 22))
    # 建立连接
    trans.connect(username='user', password='passwd')
    # 实例化一个 sftp对象,指定连接的通道
    sftp = paramiko.SFTPClient.from_transport(trans)
    # 获取目录结构
    file_list = sftp.listdir(remote_dirPath)
    print('待下载的目录结构:',file_list)
    for file in file_list:
        if type not in file:
            continue
        #过滤隐藏文件
        if re.match(reg, file):
            continue
        # 下载文件
        sftp.get(remotepath=remote_dirPath+'/'+file, localpath=loacl_dirPath+'/'+file)
    trans.close()

4、从本地上传目录到服务器

import paramiko
import re
#上传文件夹
def upload_dir(loacl_dirPath, remote_dirPath):
    reg = r'^\\..*'
    # 实例化一个transport对象
    trans = paramiko.Transport(('192.195.x.xxx', 22))
    # 建立连接
    trans.connect(username='user', password='passwd')
    # 实例化一个 sftp对象,指定连接的通道
    sftp = paramiko.SFTPClient.from_transport(trans)
    # 获取目录结构
    file_list = os.listdir(loacl_dirPath)
    print('待上传的目录结构:',file_list)
    for file in file_list:
        # 过滤隐藏文件
        if re.match(reg, file):
            continue
        # 上传文件
        sftp.put(localpath=loacl_dirPath + '/' + file, remotepath=remote_dirPath + '/' + file)
    trans.close()

5、连接远程服务器并执行基本命令

import paramiko
#执行命令
def exec_command():
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(hostname='192.195.x.xxx',username='user',password='passwd',port=22)
    stdin, stdout, stderror = ssh.exec_command('df -h')
    print(stdout.read().decode())
    ssh.close()

在这里插入图片描述

以上是关于Python之远程控制库paramiko的主要内容,如果未能解决你的问题,请参考以下文章

python之paramiko密钥库+密码登录

python工具编写之paramiko实现SSH远程连接

Python远程连接主机之paramiko模块

python之paramiko 远程执行命令

Python模块学习 - Paramiko

python第三方模块之paramiko模块