Python 基于Python实现的ssh兼sftp客户端(下)
基于Python实现的ssh兼sftp客户端
by:授客 QQ:1033553122
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()
运行结果:
注意事项
# 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
Python 基于Python实现的ssh兼sftp客户端(下)的更多相关文章
- Python 基于Python实现的ssh兼sftp客户端(上)
基于Python实现的ssh兼sftp客户端 by:授客 QQ:1033553122 实现功能 实现ssh客户端兼ftp客户端:实现远程连接,执行linux命令,上传下载文件 测试环境 Win7 ...
- Python 基于Python及zookeeper实现简单分布式任务调度系统设计思路及核心代码实现
基于Python及zookeeper实现简单分布式任务调度系统设计思路及核心代码实现 by:授客 QQ:1033553122 测试环境 功能需求 实现思路 代码实践(关键技术点实现) 代码模块组织 ...
- Python 基于python操纵zookeeper介绍
基于python操纵zookeeper介绍 by:授客 QQ:1033553122 测试环境 Win7 64位 Python 3.3.4 kazoo-2.6.1-py2.py3-none-any.w ...
- Python 基于Python结合pykafka实现kafka生产及消费速率&主题分区偏移实时监控
基于Python结合pykafka实现kafka生产及消费速率&主题分区偏移实时监控 By: 授客 QQ:1033553122 1.测试环境 python 3.4 zookeeper- ...
- Python 基于Python从mysql表读取千万数据实践
基于Python 从mysql表读取千万数据实践 by:授客 QQ:1033553122 场景: 有以下两个表,两者都有一个表字段,名为waybill_no,我们需要从tl_waybill_b ...
- Python基于Python实现批量上传文件或目录到不同的Linux服务器
基于Python实现批量上传文件或目录到不同的Linux服务器 by:授客 QQ:1033553122 实现功能 1 测试环境 1 使用方法 1 1. 编辑配置文件conf/rootpath_fo ...
- Python 基于python编写一些算法程序等
基于python编写一些算法程序等 by:授客 QQ:1033553122 QQ群:7156436 没特意去研究,只是这对群友在QQ群里(7156436)提出的一些小程序实现.编程题,算法.问题等,本 ...
- Python 基于python+mysql浅谈redis缓存设计与数据库关联数据处理
基于python+mysql浅谈redis缓存设计与数据库关联数据处理 by:授客 QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3 ...
- Python 基于python操纵redis入门介绍
基于python操纵redis入门介绍 by:授客 QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3.3.2 基于Python操作R ...
随机推荐
- JSP内置对象的使用(一)
JSP九大内置对象是:request.response.session.application.out.pagecontext.config.page.exception. JSP常用的内置对象是:o ...
- Java使用OkHttps工具类调用外部接口
前言 现在公司业务已止不是传统的增删改查等简单的业务处理操作,而是对数据各种联调三方接口与其他系统进行交互等,那么就需要我们在后台java中进行外部接口的调用,本文采用OkHttps工具类对接微信接口 ...
- Intellij IDEA神器居然还有这些小技巧
概述 Intellij IDEA真是越用越觉得它强大,它总是在我们写代码的时候,不时给我们来个小惊喜.出于对Intellij IDEA的喜爱,我决定写一个与其相关的专栏或者系列,把一些好用的Intel ...
- AutoFac (控制反转IOC 与依赖注入DI)
重要的参考资料http://www.cnblogs.com/xdp-gacl/p/4249939.html 谈谈对Spring IOC的理解 IOC概念(很重要) 项目 先引入AutoFac 和Aut ...
- 【原创】《windows驱动开发技术详解》第4章实验总结一
目录 1 实验要求 2 编写过程 2.1 确立整体架构 2.1.1 入口函数——DriverEntry 2.1.2 自定义创建设备函数——CreateDevice 2.1.3 卸载函数——Driver ...
- Java 容器源码分析之 TreeMap
TreeMap 是一种基于红黑树实现的 Key-Value 结构.在使用集合视图在 HashMap 中迭代时,是不能保证迭代顺序的: LinkedHashMap 使用了双向链表,保证按照插入顺序或者访 ...
- javaScript之变量与数据类型
http://www.cnblogs.com/yuanchenqi/articles/5980312.html 在了解变量之前,我们首先学习JavaScript的引入方式 JavaScript的引入方 ...
- 教你如何在React及Redux项目中进行服务端渲染
服务端渲染(SSR: Server Side Rendering)在React项目中有着广泛的应用场景 基于React虚拟DOM的特性,在浏览器端和服务端我们可以实现同构(可以使用同一份代码来实现多端 ...
- Perl:undef类型和defined()函数
undef和defined()函数 undef表示的像是数据库中的"null".它表示空,啥也没有,是完全未定义的.这不等于字符串的空,不等于数值0,它是另一种类型. 在某些时候, ...
- GNU C 与 ANSI C(下)
1. 语句表达式 GNU C 把包含在括号中的复合语句看做是一个表达式,称作语句表达式,它可以出现在任何允许表达式的地方.我们可以在语句表达式中使用原本只能在复合语句中使用的循环.局部变量等,例如: ...