首页 > 编程语言 >使用Python Paramiko创建文件目录并上传文件的终极指南

使用Python Paramiko创建文件目录并上传文件的终极指南

时间:2024-07-30 19:19:33浏览次数:13  
标签:remote Python sftp client ssh file path 文件目录 Paramiko

哈喽,大家好,我是木头左!

前言:为何选择Paramiko?

在网络运维和自动化领域,SSH(Secure Shell)协议是连接和管理远程服务器的常用手段。而Paramiko是一个用于进行SSH2会话的Python库,它支持加密、认证和文件传输等功能。使用Paramiko,可以方便地实现远程命令执行、文件上传下载等操作。

准备工作:安装与导入

确保你已经安装了paramiko库。如果没有安装,可以通过pip轻松完成:

pip install paramiko

安装完成后,在Python脚本中导入所需的模块:

import paramiko

创建SSH客户端

在开始任何操作之前,需要创建一个SSH客户端实例,并配置相关参数。

ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())  # 自动添加主机密钥

连接到远程服务器

接下来,使用你的服务器的IP地址、端口号、用户名和密码来连接到远程服务器。

ssh_client.connect(hostname='your_server_ip', port=22, username='your_username', password='your_password')

创建文件目录

一旦连接成功,你就可以通过执行SSH命令来创建文件目录了。以下是一个简单的示例,展示如何创建一个名为my_directory的新目录。

command = "mkdir my_directory"
stdin, stdout, stderr = ssh_client.exec_command(command)
print("Directory created:", stdout.read().decode())

上传文件

使用SFTP客户端

Paramiko提供了一个SFTP客户端,可以很方便地进行文件传输。你需要启动一个SFTP会话。

sftp_client = ssh_client.open_sftp()

然后,你可以使用put方法将本地文件上传到远程服务器。

    
def ftp():
    ssh = get_ssh(hostname, port, username, password)
    sftp = ssh.open_sftp()
    try:
        remote_file = sftp.open(remote_path, 'r')
    except Exception:
        print("remote file not exist: %s" % remote_path)        
        return
    file_util.write(local_path, remote_file.read().decode('utf-8'))
    remote_file.close()
    sftp.close()
    ssh.close()
    print('ftp %s 下载成功 \nfrom %s \nto %s' % (hostname, remote_path, local_path))
def up():
    ssh = get_ssh(hostname, port, username, password)
    try:
        stdin, stdout, stderr = ssh.exec_command('mkdir -p  {}'.format(remote_path))
        ssh.close()
        ssh = get_ssh(hostname, port, username, password)
        sftp = ssh.open_sftp()
        sftp.put(local_path+'\\'+file_name, remote_path+'/'+file_name)
    except Exception as e:
        print("remote file not exist: %s, Exception:%s" % (remote_path, str(e)))
        return
    sftp.close()
    ssh.close()
    print('ftp %s 上传成功 \nfrom %s \nto %s' % (hostname, local_path, remote_path))

处理异常

在实际操作过程中,可能会遇到各种异常,比如文件不存在、权限问题等。因此,合理地处理异常是非常重要的。

try:
    sftp_client.put(local_file_path, remote_directory)
except FileNotFoundError:
    print("Local file not found!")
except PermissionError:
    print("No permission to upload the file!")
except Exception as e:
    print("An error occurred:", str(e))
finally:
    sftp_client.close()
    ssh_client.close()

高级用法:断点续传与错误重试

在某些场景下,网络不稳定或者文件较大时,断点续传和错误重试功能就显得尤为重要。你可以通过设置put方法的resumable参数为True来实现断点续传,并通过循环和异常处理来实现错误重试。

结语:让自动化更加高效

通过本文的指导,你现在应该能够使用Python的Paramiko库来创建远程文件目录并上传文件。这些技能不仅能够提高你的工作效率,还能够让你在自动化运维的道路上更进一步。记得在实际操作中多加练习,以便更好地掌握这些有用的工具。

注意:上述代码仅为示例,实际使用时请根据你的环境和需求进行相应的调整。此外,敏感信息如服务器地址、用户名和密码应妥善保管,不应在公开场合泄露。

我是木头左,感谢各位童鞋的点赞、收藏,我们下期更精彩!

标签:remote,Python,sftp,client,ssh,file,path,文件目录,Paramiko
From: https://www.cnblogs.com/bigleft/p/18333189

相关文章

  • python_爬虫基础
    python爬虫基础1、初识爬虫1.rebots协议网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,但它仅仅是互联网中的约定而已,可以不用遵守。例如:https://www.taobao.com/robots.txt2.谷歌浏览器插件●XPathHelper●WebScraper●ToggleJavaScript●User-......
  • Python - Creating Managed Attributes using properties
    CreatingManagedAttributesusingpropertiesPropertiescanbeusedtocreatedataattributeswithspecialfunctionality.Ifyouwantsomeextrafunctionality(liketypechecking,datavalidationortransformation)whilegettingorsettingadataattribut......
  • Python - Static Methods
    Sometimeswehavetowritemethodsthatarerelatedtotheclassbutdonotneedanyaccesstoinstanceorclassdataforperformingtheirwork.Thesemethodscouldbesomehelperorutilitymethodsthatareusedinsidetheclassbuttheycanperformthei......
  • python中列表的学习
    列表目录列表列表的定义创建列表列表的索引列表的切片内置函数列表的遍历列表的常用方法(变量.方法名())列表的定义List(列表)是Python中使用最频繁的数据类型,在其他语言中通常叫做数组专门用于存储一串信息列表用[]定义,数据之间使用﹐分隔列表的索引从О开始索引就是数据在列......
  • Python 字节串转Hex字符串(一个久远的问题点总结)
    时间:2024.07.30作者:Yuan  这是一个今天看来似乎有点久远的问题,但是值得被记录和澄清一下!  那是在2022年1月份参与的一个项目中遇到的问题,大概需求是利用SHT40-AD1B-R2芯片,读取环境温度。其实就是通过i2c与这个温度传感器建立通讯,然后读取温湿度信息,对于上位机的......
  • [附开题]flask框架的汽车零件维修管理信息平台t6rr1(python+源码)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着汽车工业的快速发展和汽车保有量的持续增长,汽车零件维修管理已成为汽车后市场的重要组成部分。传统的手工记录和管理方式已难以满足现......
  • [附开题]flask框架的汽车售后管理系统2888o(python+源码)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着汽车产业的快速发展和消费者购车需求的日益增长,汽车售后服务已成为车企和经销商提升客户满意度、增强品牌忠诚度的重要环节。然而,传统......
  • [附开题]flask框架的社区服务管理系统0f6i9(python+源码)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着城市化进程的深入和居民生活水平的提高,社区服务需求日益多样化与复杂化。传统的社区服务模式已难以满足居民对于高效、便捷、个性化服......
  • [附开题]flask框架的社区服务系统ff00q(python+源码)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着社会的快速发展和居民生活水平的提高,社区作为城市的基本单元,其服务功能日益丰富和多样化。然而,传统社区服务方式在应对日益增长的居民......
  • Python基础知识笔记---保留字
    保留字,也称关键字,是指被编程语言内部定义并保留使用的标识符。一、保留字概览  二、保留字用途 1.`False`:表示布尔值假。2.`None`:表示空值或无值。3.`True`:表示布尔值真。4.`not`:布尔逻辑操作符,对条件表达式取反。5.`or`:布尔逻辑操作符,用于连接两个条件表达式......