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 django集成cas验证系统
Jul 14 Python
讲解Python中的标识运算符
May 14 Python
Linux下使用python自动修改本机网关代码分享
May 21 Python
python实现简单ftp客户端的方法
Jun 28 Python
遍历python字典几种方法总结(推荐)
Sep 11 Python
Django1.7+python 2.78+pycharm配置mysql数据库
Oct 09 Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
Apr 18 Python
Django objects的查询结果转化为json的三种方式的方法
Nov 07 Python
Matplotlib scatter绘制散点图的方法实现
Jan 02 Python
Selenium启动Chrome时配置选项详解
Mar 18 Python
详解python变量与数据类型
Aug 25 Python
python爬虫scrapy框架的梨视频案例解析
Feb 20 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
玛琪朵 Macchiato
2021/03/03 咖啡文化
php木马攻击防御之道
2008/03/24 PHP
php sprintf()函数让你的sql操作更安全
2008/07/23 PHP
同台服务器使用缓存APC效率高于Memcached的演示代码
2010/02/16 PHP
FirePHP 推荐一款PHP调试工具
2011/04/23 PHP
php中url传递中文字符,特殊危险字符的解决方法
2013/08/17 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
PHP扩展安装方法步骤解析
2020/11/24 PHP
学习YUI.Ext 第二天
2007/03/10 Javascript
javascript 面向对象编程基础:封装
2009/08/21 Javascript
JavaScript splice()方法详解
2020/09/22 Javascript
Bootstrap每天必学之js插件
2015/11/30 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
探讨:JavaScript ECAMScript5 新特性之get/set访问器
2016/05/05 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
2016/12/07 Javascript
ReactNative列表ListView的用法
2017/08/02 Javascript
js表单序列化判断空值的实例
2017/09/22 Javascript
jquery实现楼层滚动效果
2018/01/01 jQuery
vue axios 在页面切换时中断请求方法 ajax
2018/03/05 Javascript
vue 动态创建组件的两种方法
2020/12/31 Vue.js
详解Vue的七种传值方式
2021/02/08 Vue.js
在Python中marshal对象序列化的相关知识
2015/07/01 Python
python实现的正则表达式功能入门教程【经典】
2017/06/05 Python
Python 多线程的实例详解
2017/09/07 Python
Python3计算三角形的面积代码
2017/12/18 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
2018/04/23 Python
Python中安装easy_install的方法
2018/11/18 Python
python实现给微信指定好友定时发送消息
2019/04/29 Python
俄罗斯鲜花递送:AMF
2020/04/24 全球购物
如何防止同一个帐户被多人同时登录
2013/08/01 面试题
幼儿园教师培训方案
2014/02/04 职场文书
创业资金计划书
2014/02/06 职场文书
项目总经理岗位职责
2014/02/14 职场文书
海飞丝的广告词
2014/03/20 职场文书
师范生求职信
2014/06/14 职场文书