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 str与repr的区别
Mar 23 Python
使用Nginx+uWsgi实现Python的Django框架站点动静分离
Mar 21 Python
Python实现将不规范的英文名字首字母大写
Nov 15 Python
Python PyQt5实现的简易计算器功能示例
Aug 23 Python
pycharm远程开发项目的实现步骤
Jan 20 Python
python自定义时钟类、定时任务类
Feb 22 Python
python循环输出三角形图案的例子
Nov 22 Python
PyTorch笔记之scatter()函数的使用
Feb 12 Python
django form和field具体方法和属性说明
Jul 09 Python
matplotlib 三维图表绘制方法简介
Sep 20 Python
详解用selenium来下载小姐姐图片并保存
Jan 26 Python
Python激活Anaconda环境变量的详细步骤
Jun 08 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
SONY ICF-SW55的电路分析
2021/03/02 无线电
PHP数组交集的优化代码分析
2011/03/06 PHP
PHP定时执行计划任务的多种方法小结
2011/12/19 PHP
PHP中的类型提示(type hinting)功能介绍
2015/07/01 PHP
IE6背景图片不缓存问题解决方案及图片使用策略多个方法小结
2012/05/14 Javascript
JavaScript中json对象和string对象之间相互转化
2012/12/26 Javascript
jquery自定义属性(类型/属性值)
2013/05/21 Javascript
获取3个数组不重复的值的具体实现
2013/12/30 Javascript
JavaScript新窗口与子窗口传值详解
2014/02/11 Javascript
js去除输入框中所有的空格和禁止输入空格的方法
2014/06/09 Javascript
JavaScript中使用Object.prototype.toString判断是否为数组
2015/04/01 Javascript
jQuery实现气球弹出框式的侧边导航菜单效果
2015/09/22 Javascript
JS中用三种方式实现导航菜单中的二级下拉菜单
2016/10/31 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
2017/03/28 Javascript
Javascript实现购物车功能的详细代码
2018/05/08 Javascript
layui table 复选框跳页后再回来保持原来选中的状态示例
2019/10/26 Javascript
jQuery操作事件完整实例分析
2020/01/10 jQuery
vue引用外部JS的两种种方法
2020/01/28 Javascript
[05:05]DOTA2亚洲邀请赛 战队出场仪式
2015/02/07 DOTA
[41:13]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第一场 11.20
2020/11/20 DOTA
浅谈Python中copy()方法的使用
2015/05/21 Python
Python使用PyCrypto实现AES加密功能示例
2017/05/22 Python
详解Python实现多进程异步事件驱动引擎
2017/08/25 Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
2018/01/26 Python
Django如何使用第三方服务发送电子邮件
2019/08/14 Python
多视角3D可旋转的HTML5 Logo动画
2016/03/02 HTML / CSS
员工培训邀请函
2014/01/11 职场文书
大学同学聚会邀请函
2014/01/29 职场文书
就业协议书范本
2014/04/11 职场文书
培训协议书范本
2014/04/22 职场文书
员工手册编写范本
2015/05/14 职场文书
婚礼必备主持词范本!
2019/07/23 职场文书
Python超简单容易上手的画图工具库推荐
2021/05/10 Python
PyTorch 如何检查模型梯度是否可导
2021/06/05 Python
Java基础之this关键字的使用
2021/06/30 Java/Android
vue中控制mock在开发环境使用,在生产环境禁用方式
2022/04/06 Vue.js