python paramiko利用sftp上传目录到远程的实例

让我来讲解“python paramiko利用sftp上传目录到远程的实例”的完整攻略。

首先,需要了解一下paramiko的基本使用,并且需要保证本地机器上安装了paramiko库。

  1. 连接远程主机

首先需要使用SSH协议连接到远程主机。示例代码如下:

import paramiko

#创建SSHClient实例对象并建立ssh连接
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='192.168.1.10', port=22, username='root', password='passwd')

这里的hostname为目标主机的IP地址,port为ssh端口,username为ssh用户名,password为ssh登录密码。

  1. 使用sftp上传目录

接下来需要使用SFTP协议上传目录到目标主机上.示例代码如下:

import os
import paramiko

#创建SSHClient实例对象并建立ssh连接
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='192.168.1.10', port=22, username='root', password='passwd')

#创建sftp客户端对象
sftp = ssh.open_sftp()

#需要上传的本地目录路径
local_dir = '/home/user/data'

#目标主机上的目录路径
remote_dir = '/mnt/data'

#遍历本地目录中的所有文件并上传到目标主机
for root, dirs, files in os.walk(local_dir):
    #计算相对路径,以方便创建目录
    path = os.path.relpath(root, local_dir)
    remote_path = os.path.join(remote_dir, path)
    try:
        #判断目录是否存在,不存在则创建目录
        sftp.stat(remote_path)
    except:
        sftp.mkdir(remote_path)
    for file in files:
        local_filename = os.path.join(root, file)
        remote_filename = os.path.join(remote_path, file)
        print(f"Uploading {local_filename} to {remote_filename}...")
        sftp.put(local_filename, remote_filename)
#关闭连接
ssh.close()

上述代码使用os.walk遍历本地目录中的所有文件,然后使用SFTP协议上传到目标主机上。其中,需要指定本地目录路径和目标主机的目录路径。

  1. 示例说明

示例1:上传本地/home/user/data目录到目标主机的/mnt/data目录

import os
import paramiko

#创建SSHClient实例对象并建立ssh连接
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='192.168.1.10', port=22, username='root', password='passwd')

#创建sftp客户端对象
sftp = ssh.open_sftp()

#需要上传的本地目录路径
local_dir = '/home/user/data'

#目标主机上的目录路径
remote_dir = '/mnt/data'

#遍历本地目录中的所有文件并上传到目标主机
for root, dirs, files in os.walk(local_dir):
    #计算相对路径,以方便创建目录
    path = os.path.relpath(root, local_dir)
    remote_path = os.path.join(remote_dir, path)
    try:
        #判断目录是否存在,不存在则创建目录
        sftp.stat(remote_path)
    except:
        sftp.mkdir(remote_path)
    for file in files:
        local_filename = os.path.join(root, file)
        remote_filename = os.path.join(remote_path, file)
        print(f"Uploading {local_filename} to {remote_filename}...")
        sftp.put(local_filename, remote_filename)
#关闭连接
ssh.close()

示例2:上传本地/home/user/data目录到目标主机的/mnt/data2目录

import os
import paramiko

#创建SSHClient实例对象并建立ssh连接
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='192.168.1.10', port=22, username='root', password='passwd')

#创建sftp客户端对象
sftp = ssh.open_sftp()

#需要上传的本地目录路径
local_dir = '/home/user/data'

#目标主机上的目录路径
remote_dir = '/mnt/data2'

#遍历本地目录中的所有文件并上传到目标主机
for root, dirs, files in os.walk(local_dir):
    #计算相对路径,以方便创建目录
    path = os.path.relpath(root, local_dir)
    remote_path = os.path.join(remote_dir, path)
    try:
        #判断目录是否存在,不存在则创建目录
        sftp.stat(remote_path)
    except:
        sftp.mkdir(remote_path)
    for file in files:
        local_filename = os.path.join(root, file)
        remote_filename = os.path.join(remote_path, file)
        print(f"Uploading {local_filename} to {remote_filename}...")
        sftp.put(local_filename, remote_filename)
#关闭连接
ssh.close()

这两个示例分别演示了将本地的/home/user/data目录上传到目标主机的/mnt/data和/mnt/data2目录下,以供参考。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python paramiko利用sftp上传目录到远程的实例 - Python技术站

(0)
上一篇 2023年6月5日
下一篇 2023年6月5日

相关文章

  • Python bool布尔类型详解

    bool 类型只有两个值,要么为True(真),要么为False(假)。 bool 类型用于比较算式,如3>2这个算式里就称为“真”,Python当中用 True 来表示。 比如2>10这个算式,它是错误的,在程序世界里就称之为“假”,Python当中用 False 来表示。 实例如下: >>> 3>2 True >>&g…

    Python数据类型 2022年12月18日
    00
  • 如何用python爬取微博热搜数据并保存

    在本攻略中,我们将介绍如何使用Python爬取微博热搜数据并保存。以下是一个完整攻略,包括两个示例。 步骤1:分析网页 首先,我们需要分析微博热搜页面的HTML结构。我们可以使用Chrome浏览器的开发者工具来查看页面的HTML结构。 在Chrome浏览器中,我们可以按F12键打开开发者工具。然后,我们可以选择“Elements”选项卡,查看页面的HTML结…

    python 2023年5月15日
    00
  • Python实现的knn算法示例

    Python实现的knn算法示例 K最近邻(KNN)是一种基于实例的学习方法,它将新数据点分配给与其最相似的K个训练数据点之一。在本攻略中,我们将介绍如何使用Python实现KNN算法,并提供两个示例来说明如何使用KNN算法进行分类和回归。 步骤1:了解KNN算法 在KNN算法中,我们需要考虑以下因素: K值:K值是指用于分类或回归的最近邻居的数量。通常,我…

    python 2023年5月14日
    00
  • python openpyxl的使用方法

    下面我来详细讲解一下“python openpyxl的使用方法”: 什么是openpyxl Openpyxl 是 Excel 的Python库,用于读写Excel 2010 xlsx/xlsm/xltx/xltm 文件。它可以帮助我们创建、读取以及修改 Excel 文件,十分方便实用。使用 openpyxl 可以把 Excel 文件作为一个对象来处理,然后通…

    python 2023年5月13日
    00
  • python实现给数组按片赋值的方法

    给数组按片赋值,可以使用Python中的slice(切片)操作。slice操作可以指定一个起始位置、一个结束位置和步长,通过这三个参数可以实现链式赋值操作。 下面是一个步骤: 1.定义一个数组arr,并初始化它,例如:arr=[0,1,2,3,4,5,6,7,8,9] 2.使用arr的slice操作,将下标为[2,4,6]的元素重新赋值为10,11,12 3…

    python 2023年6月5日
    00
  • 基于Python制作短信发送程序

    请看下面详细的讲解。 基于Python制作短信发送程序攻略 1. 准备工作 在制作短信发送程序前,需要一些准备工作。具体步骤如下: 1.1 注册开发者账号 在制作短信发送程序之前,需要注册一个开发者账号。以阿里云短信服务为例,注册链接为: https://www.aliyun.com/product/sms?spm=5176.10695662.1176615…

    python 2023年6月13日
    00
  • 详解如何在Python中水平或垂直地翻转图像?

    在Python中处理图像可以使用Python Imaging Library (PIL)或者被其替代的库Pillow。以下是如何在Python中水平或垂直地翻转图像的完整攻略。 安装Pillow 安装Pillow前,确保在命令提示符或终端中运行以下命令: pip install pillow 读取图像 使用Pillow库的Image模块打开要翻转的图像。以下…

    python-answer 2023年3月25日
    00
  • Python星号*与**用法分析

    当使用Python编程时,星号和通常用于处理参数,unpacking元素和编写可变数量的函数参数。接下来,我将详细讲解Python星号与**用法分析以及在不同场景下的使用示例。 使用星号*处理参数 常规参数和可变数量的参数同时存在 在Python中,可以将星号用于处理常规参数和可变数量的参数。下面是一个例子,其中a是常规参数,b是可变数量的参数,且带有星号的…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部