前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 基于Python实现的ssh兼sftp客户端(下)

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

作者头像
授客
发布2019-09-11 16:39:36
9350
发布2019-09-11 16:39:36
举报
文章被收录于专栏:授客的专栏授客的专栏

otherTools.py

#!/usr/bin/env/ python # -*- coding:utf-8 -*- __author__ = 'laifuyu' import os import subprocess class OtherTools: def __init__(self): self.filepath_list = [] # 批量创建目录 def mkdirs_once_many(self, path): path = os.path.normpath(path) # 去掉路径最右侧的 \\ 、/ path = path.replace('\\', '/') # 将所有的\\转为/,避免出现转义字符串 head, tail = os.path.split(path) new_dir_path = '' # 反转后的目录路径 root = '' #根目录 if not os.path.isdir(path) and os.path.isfile(path): # 如果path指向的是文件,则继续分解文件所在目录 head, tail = os.path.split(head) if tail == '': return while tail: 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 = '' while tail: temp = temp + '/' + tail dir_path = root + temp if not os.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()

运行结果:

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

注意事项

# 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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-12-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档