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网络爬虫采集联想词示例
Feb 11 Python
Python 文件读写操作实例详解
Mar 12 Python
Python中的测试模块unittest和doctest的使用教程
Apr 14 Python
Apache如何部署django项目
May 21 Python
python 求1-100之间的奇数或者偶数之和的实例
Jun 11 Python
对PyQt5中树结构的实现方法详解
Jun 17 Python
Django缓存系统实现过程解析
Aug 02 Python
Python爬虫实现HTTP网络请求多种实现方式
Jun 19 Python
编写python代码实现简单抽奖器
Oct 20 Python
pandas使用函数批量处理数据(map、apply、applymap)
Nov 27 Python
Django前后端分离csrf token获取方式
Dec 25 Python
Python学习开发之图形用户界面详解
Aug 23 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 header()函数使用说明
2008/07/10 PHP
在字符串指定位置插入一段字符串的php代码
2010/02/16 PHP
提示Trying to clone an uncloneable object of class Imagic的解决
2011/10/27 PHP
深入浅析yii2-gii自定义模板的方法
2016/04/26 PHP
php源码 fsockopen获取网页内容实例详解
2016/09/24 PHP
Laravel框架实现利用中间件进行操作日志记录功能
2018/06/06 PHP
JavaScript 面向对象编程(2) 定义类
2010/05/18 Javascript
谈谈JavaScript中的函数与闭包
2013/04/14 Javascript
js调用css属性写法
2013/09/21 Javascript
JQuery中DOM实现事件移除的方法
2015/06/13 Javascript
Uploadify上传文件方法
2016/03/16 Javascript
AngularJS控制器继承自另一控制器
2016/05/09 Javascript
简单的JS轮播图代码
2016/07/18 Javascript
jQuery基于BootStrap样式实现无限极地区联动
2016/08/26 Javascript
浅谈JS如何实现真正的对象常量
2017/06/25 Javascript
vue父组件通过props如何向子组件传递方法详解
2017/08/16 Javascript
cocos creator Touch事件应用(触控选择多个子节点的实例)
2017/09/10 Javascript
Node.js使用cookie保持登录的方法
2018/05/11 Javascript
移动端滑动切换组件封装 vue-swiper-router实例详解
2018/11/25 Javascript
python读取浮点数和读取文本文件示例
2014/05/06 Python
Python操作使用MySQL数据库的实例代码
2017/05/25 Python
python3+PyQt5重新实现自定义数据拖放处理
2018/04/19 Python
pygame游戏之旅 添加游戏介绍
2018/11/20 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
2019/07/17 Python
Python vtk读取并显示dicom文件示例
2020/01/13 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
2020/07/14 Python
python中numpy.empty()函数实例讲解
2021/02/05 Python
详解CSS3 Media Queries中媒体属性的使用
2016/02/29 HTML / CSS
Css3新特性应用之视觉效果实例
2016/12/12 HTML / CSS
HTML5+CSS设置浮动却没有动反而在中间且错行的问题
2020/05/26 HTML / CSS
印度最大的网上花店:Ferns N Petals(鲜花、礼品和蛋糕)
2017/10/16 全球购物
会计自我鉴定范文
2013/10/06 职场文书
党员一帮一活动总结
2014/07/08 职场文书
工厂仓管员岗位职责范本
2014/07/17 职场文书
反四风对照检查材料思想汇报
2014/09/16 职场文书
基于JavaScript实现年月日三级联动
2021/06/22 Javascript