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


Posted in Python onJanuary 03, 2019

网上大部分都是上传文件,于是个人参照网上一些博客的内容,写了一个把windows上目录上传到远程linux的一个小程序。

下面是代码:

class ExportPrepare(object):
 def __init__(self):
 pass

 def sftp_con(self):
  t = paramiko.Transport((self.ip, self.port))
  t.connect(username=self.username, password=self.password)
  return t

 # 找到所有你要上传的目录已经文件。
 def __get_all_files_in_local_dir(self, local_dir):
  all_files = list()

  if os.path.exists(local_dir):
   files = os.listdir(local_dir)
   for x in files:
    filename = os.path.join(local_dir, x)
    print "filename:" + filename
    # isdir
    if os.path.isdir(filename):
     all_files.extend(self.__get_all_files_in_local_dir(filename))
    else:
     all_files.append(filename)
  else:
   print '{}does not exist'.format(local_dir)
  return all_files

 # Copy a local file (localpath) to the SFTP server as remotepath
 def sftp_put_dir(self):
  try:
 #本地test目录上传到远程root/usr/下面
 local_dir = "c:/test"
 remote_dir = "/root/usr/test"
 
   t = self.sftp_con()
   sftp = paramiko.SFTPClient.from_transport(t)
   # sshclient
   ssh = paramiko.SSHClient()
   ssh.load_system_host_keys()
   ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
   ssh.connect(self.ip, port=self.port, username=self.username, password=self.password, compress=True)
   ssh.exec_command('rm -rf ' + remote_dir)
   if remote_dir[-1] == '/':
    remote_dir = remote_dir[0:-1]
   all_files = self.__get_all_files_in_local_dir(local_dir)
   for x in all_files:
    filename = os.path.split(x)[-1]
    remote_file = os.path.split(x)[0].replace(local_dir, remote_dir)
    path = remote_file.replace('\\', '/')
 # 创建目录 sftp的mkdir也可以,但是不能创建多级目录所以改用ssh创建。
    tdin, stdout, stderr = ssh.exec_command('mkdir -p ' + path)
    print stderr.read()
    remote_filename = path + '/' + filename
    print u'Put files...' + filename
    sftp.put(x, remote_filename)
   ssh.close()
  except Exception, e:
   print e
 
 
if __name__=='__main__':
 export_prepare = ExportPrepare()
 export_prepare.sftp_put_dir()

比较匆忙,不足之处可以指出,共同进步。

以上这篇python paramiko利用sftp上传目录到远程的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python正则匹配抓取豆瓣电影链接和评论代码分享
Dec 27 Python
通过实例浅析Python对比C语言的编程思想差异
Aug 30 Python
20招让你的Python飞起来!
Sep 27 Python
python使用arcpy.mapping模块批量出图
Mar 06 Python
python类的继承实例详解
Mar 30 Python
python用户管理系统
Mar 13 Python
python实现抖音视频批量下载
Jun 20 Python
PyCharm在新窗口打开项目的方法
Jan 17 Python
python操作kafka实践的示例代码
Jun 19 Python
wxPython之wx.DC绘制形状
Nov 19 Python
Python爬虫工具requests-html使用解析
Apr 29 Python
Python通过zookeeper实现分布式服务代码解析
Jul 22 Python
python scp 批量同步文件的实现方法
Jan 03 #Python
python Pexpect 实现输密码 scp 拷贝的方法
Jan 03 #Python
python 搭建简单的http server,可直接post文件的实例
Jan 03 #Python
Python中shapefile转换geojson的示例
Jan 03 #Python
Python关于excel和shp的使用在matplotlib
Jan 03 #Python
Python使用folium excel绘制point
Jan 03 #Python
Python获取航线信息并且制作成图的讲解
Jan 03 #Python
You might like
php 采集书并合成txt格式的实现代码
2009/03/01 PHP
解析php如何将日志写进syslog
2013/06/28 PHP
php多重接口的实现方法
2015/06/20 PHP
如何实现iframe(嵌入式帧)的自适应高度
2006/07/26 Javascript
js setTimeout opener的用法示例详解
2013/10/23 Javascript
在JavaScript中使用NaN值的方法
2015/06/05 Javascript
Angularjs 滚动加载更多数据
2016/03/17 Javascript
Bootstrap 模态框实例插件案例分析
2016/12/28 Javascript
js实现倒计时效果(小于10补零)
2017/03/08 Javascript
深入理解Angularjs中$http.post与$.post
2017/05/19 Javascript
vue 里面使用axios 和封装的示例代码
2017/09/01 Javascript
基于vue1和vue2获取dom元素的方法
2018/03/17 Javascript
垃圾回收器的相关知识点总结
2018/05/13 Javascript
vue 路由嵌套高亮问题的解决方法
2018/05/17 Javascript
React key值的作用和使用详解
2018/08/23 Javascript
微信小程序解析富文本过程详解
2019/07/13 Javascript
JavaScript实现Excel表格效果
2020/02/07 Javascript
微信小程序报错: thirdScriptError的错误问题
2020/06/19 Javascript
vuejs实现下拉框菜单选择
2020/10/23 Javascript
[01:33:25]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第一场 1月24日
2021/03/11 DOTA
python获取当前计算机cpu数量的方法
2015/04/18 Python
Python使用面向对象方式创建线程实现12306售票系统
2015/12/24 Python
python获取外网IP并发邮件的实现方法
2017/10/01 Python
python实现扫描局域网指定网段ip的方法
2019/04/16 Python
tensorflow的ckpt及pb模型持久化方式及转化详解
2020/02/12 Python
关于HTML5的安全问题开发人员需要牢记的
2012/06/21 HTML / CSS
HTML5之HTML元素扩展(下)—增强的Form表单元素值得关注
2013/01/31 HTML / CSS
颇特女士香港官网:NET-A-PORTER香港
2021/03/08 全球购物
C语言笔试题回忆
2015/04/02 面试题
UNIX特点都有哪些
2016/04/05 面试题
船舶专业个人求职信范文
2014/01/02 职场文书
酒店工程部经理岗位职责
2015/04/09 职场文书
投诉信回复范文
2015/07/03 职场文书
TensorFlow的自动求导原理分析
2021/05/26 Python
实现一个简单得数据响应系统
2021/11/11 Javascript
Python查找算法的实现 (线性、二分,分块、插值查找算法)
2022/04/24 Python