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

yizhihongxing

让我来讲解“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日

相关文章

  • Java中 % 与Math.floorMod() 区别详解

    首先来看一下 % 和 Math.floorMod() 的区别。 % 运算符 在Java中,% 运算符用于计算两个数值之间的模运算,即计算除法操作的余数。 举个例子: int a = 7; int b = 3; int result1 = a % b; // result1 = 1 在这个例子中,a % b 计算的结果是 1,代表 a 除以 b 的余数是 1。…

    python 2023年6月3日
    00
  • 使用基于Python的Tornado框架的HTTP客户端的教程

    Tornado是一个基于Python的Web框架,它提供了一个异步的网络库,可以用于构建高性能的Web应用程序和服务。Tornado还提供了一个HTTP客户端,可以用于发送HTTP请求和处理HTTP响应。本文将介绍如何使用基于Python的Tornado框架的HTTP客户端,包括安装和使用方法,并提供两个示例。 安装Tornado框架 在使用Tornado框…

    python 2023年5月15日
    00
  • python 画二维、三维点之间的线段实现方法

    下面是使用 Python 画二维、三维点之间的线段实现方法的完整攻略。 二维坐标系中绘制线段 在 Python 中,我们可以使用 matplotlib 库中的 pyplot 模块来绘制二维坐标系中的线段。 绘制单个线段 如果要绘制两个坐标点之间的线段,可以使用 plot() 函数,该函数接受两个数组作为参数,分别表示 x 轴和 y 轴的坐标值。例如: imp…

    python 2023年5月19日
    00
  • python 变量初始化空列表的例子

    以下是“Python变量初始化空列表的例子”的完整攻略。 1. 变量初始化空列表的方法 在Python中,可以使用方括号[]或list()函数创建一个空列表。例如下: my_list = [] my_list = list() 在上面的例代码中,我们创建了一个名为_list的空列表。 2 示例说明 示例1:使用空列表存储用户输入的数字 numbers = […

    python 2023年5月13日
    00
  • 如何用python清洗文件中的数据

    下面我将为您详细讲解如何用Python清洗文件中的数据。 简介 数据清洗是数据分析的重要步骤,通常包括缺失值处理、重复值删除、异常值处理、数据类型转换等过程。Python作为一门流行的编程语言,提供了丰富的数据清洗库和函数,可以帮助我们轻松地完成数据清洗工作。 准备工作 在进行数据清洗之前,我们需要先准备好数据。下面是一份模拟的数据,存储在txt文件中: 名…

    python 2023年5月13日
    00
  • 使用Python 统计文件夹内所有pdf页数的小工具

    使用Python 统计文件夹内所有pdf页数的小工具 背景 当我们需要查看PDF文件夹中所有文件的页数时,可能需要一个一个文件打开查看,手动记录页数。这样会非常耗费时间并且繁琐。因此,我们可以使用Python编写一个小工具来快速统计所有PDF文件的页数。 实现步骤 安装PyPDF2库: pip install PyPDF2 编写Python脚本 import…

    python 2023年6月6日
    00
  • linux系统使用python获取cpu信息脚本分享

    下面是详细的攻略: 1. 获取CPU信息的方法 获取CPU信息可以使用psutil库,这个库提供的使用非常简单,可以直接使用pip来安装。 具体方法如下: pip install psutil 2. 编写Python脚本获取CPU信息 (1)导入相关库 import psutil (2)获取CPU物理核心数 # 物理核心数包括所有物理CPU核心(如果有多个C…

    python 2023年6月3日
    00
  • 9个提高 Python 编程的小技巧

    9个提高 Python 编程的小技巧 Python 是一门易学易用且功能强大的编程语言。本篇攻略列举了9个小技巧,让您在日常 Python 编程中更高效、更舒适。 1. 使用虚拟环境 虚拟环境是为 Python 应用创建独立的环境,用于隔离该应用所依赖的 Python 包,防止与其他应用程序冲突。通过虚拟环境,您可以在同一台机器上为不同的 Python 应用…

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