Python 基于Python实现的ssh兼sftp客户端(下)

简介: Python 基于Python实现的ssh兼sftp客户端(下)

 基于Python实现sshsftp客户端

 


otherTools.py

#!/usr/bin/env/ python
# -*- coding:utf-8 -*-

__author__ ='laifuyu'

importos
importsubprocess

classOtherTools:
   def__init__(self):
       self.filepath_list = []

   # 批量创建目录
   defmkdirs_once_many(self, path):
       path = os.path.normpath(path)  # 去掉路径最右侧的\\/
       path = path.replace('\\','/')# 将所有的\\转为/,避免出现转义字符串

       head, tail = os.path.split(path)
       new_dir_path =''  # 反转后的目录路径
       root =''  #根目录

       if notos.path.isdir(path)andos.path.isfile(path):  # 如果path指向的是文件,则继续分解文件所在目录
           head, tail = os.path.split(head)

       iftail =='':
           return

       whiletail:
           new_dir_path = new_dir_path + tail +'/'
           head, tail = os.path.split(head)
           root = head
       else:
           new_dir_path = root + new_dir_path

           # 批量创建目录
           new_dir_path = os.path.normpath(new_dir_path)
           head, tail = os.path.split(new_dir_path)
           temp =''
           whiletail:
               temp = temp +'/'+ tail
               dir_path = root + temp
               if notos.path.isdir(dir_path):
                   os.mkdir(dir_path)
               head, tail = os.path.split(head)

 

# 测试
ssh_client = MySSHClient()
ssh_client.connect(hostname='192.168.1.102',port=22,username='root',password='huozhe')
ssh_client.exec_command('ls -l')

ssh_client.download_file('/root/dirForDownload/file','./test1.txt')
ssh_client.download_file('/root/dirForDownload/file','.\test2.txt')
ssh_client.download_file('/root/dirForDownload/file','d:\\test3.txt')
ssh_client.download_file('/root/dirForDownload/file','d:\test4.txt')
ssh_client.download_file('/root/dirForDownload/file','d:\mytest4.txt')
ssh_client.download_file('/root/dirForDownload/file','d:/test5.txt')
ssh_client.download_file('/root/dirForDownload/file','d:\dir1\dir2\test6.txt')

ssh_client.upload_file('./test1.txt','/root/test1.txt')
ssh_client.upload_file('d:\mytest4.txt','/root/mytestfile.txt')
ssh_client.upload_file('d:\dir1\dir2\test6.txt','./test6.txt')
ssh_client.close()

运行结果:

 


注意事项

# 1. 下载文件
# 1) 不支持目录级的下载,即只能下载指定的单个非目录文件
# 2) 本地目标文件路径只支持文件路径,不支持目录(比如localpath='d:\\'),目标文件所在的上级路径可以不存在(但路径必须位于分区下)
# 比如欲下载到本地路径:d:\dir1\dir2\test.txt, d:\dir1\dir2\可以不存在
# 3) 本地目标文件支持相对路径,比如./text.txt,远程目标文件仅支持绝对路径

# 2. 上传文件
# 1) 不支持目录级的上传,只能上传指定的单个文件
# 2) 远程目标文件所在的上级路径必须存在,比如remotepath='/root/dir1/tarfile',其中/root/dir1必须存在
# 3) 远程目标文件、本地文件路径都支持相对路径,比如./text.txt

# 3. 重复下载文件、上传文件,会自动覆盖已经下载的文件、已上传的文件


参考文档:

http://docs.paramiko.org/en/2.4/api/channel.html

http://docs.paramiko.org/en/2.4/api/sftp.html#paramiko.sftp_client.SFTPClient

目录
相关文章
|
3月前
|
Ubuntu 网络安全 数据安全/隐私保护
如何在 Ubuntu 上创建一个 SSH CA 以验证主机和客户端
如何在 Ubuntu 上创建一个 SSH CA 以验证主机和客户端
79 0
|
1月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
139 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
1月前
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
149 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
|
25天前
|
程序员 网络安全 开发工具
读书|通过 SSH & SFTP 管理 Kindle 上的文件
这是这个系列的第三篇文章,介绍我如何通过 SSH & SFTP 管理 Kindle 上的文件。
38 3
|
2月前
|
关系型数据库 MySQL Python
mysql之python客户端封装类
mysql之python客户端封装类
|
3月前
|
网络协议 安全 Unix
6! 用Python脚本演示TCP 服务器与客户端通信过程!
6! 用Python脚本演示TCP 服务器与客户端通信过程!
|
3月前
|
传感器 数据采集 算法
python实现ModBusRTU客户端方式
python实现基于串口通信的ModBusRTU客户端是一件简单的事情,只要通过pymodbus模块就可以实现。
|
3月前
|
开发者 Python
深入解析Python `httpx`源码,探索现代HTTP客户端的秘密!
深入解析Python `httpx`源码,探索现代HTTP客户端的秘密!
89 1
|
3月前
|
运维 安全 网络安全
"革新远程访问体验:Docker化部署webssh2,一键启动Web SSH客户端,让远程管理如虎添翼!"
【8月更文挑战第2天】Docker作为软件开发与运维的关键工具,以其轻量级、可移植及强隔离特性简化了应用部署。结合webssh2这一开源Web SSH客户端,可通过浏览器安全便捷地访问SSH服务器,无需额外软件。首先确保已安装Docker,接着拉取webssh2镜像并运行容器,映射端口以便外部访问。配置好SSH服务器后,通过浏览器访问指定URL即可开始SSH会话。此方案不仅提升了用户体验,还加强了访问控制与系统安全。
336 7
|
4月前
|
传感器 数据采集 算法
python实现ModBusRTU客户端方式
python实现基于串口通信的ModBusRTU客户端是一件简单的事情,只要通过pymodbus模块就可以实现。