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编写脚本获取手机当前应用apk的信息
Jul 21 Python
使用Python发送邮件附件以定时备份MySQL的教程
Apr 25 Python
使用py2exe在Windows下将Python程序转为exe文件
Mar 04 Python
Python获取linux主机ip的简单实现方法
Apr 18 Python
Python实现对文件进行单词划分并去重排序操作示例
Jul 10 Python
Python SQL查询并生成json文件操作示例
Aug 17 Python
Python正则表达式指南 推荐
Oct 09 Python
Django框架模板注入操作示例【变量传递到模板】
Dec 19 Python
解决tensorflow打印tensor有省略号的问题
Feb 04 Python
Python实现栈的方法详解【基于数组和单链表两种方法】
Feb 22 Python
只用20行Python代码实现屏幕录制功能
Jun 02 Python
使用Python开发冰球小游戏
Apr 30 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将字符串全部转换成大写或者小写的方法
2015/03/17 PHP
PHP中数据类型转换的三种方式
2015/04/02 PHP
[原创]IE view-source 无法查看看源码 JavaScript看网页源码
2009/07/19 Javascript
利用js实现选项卡的特别效果的实例
2013/03/03 Javascript
jQuery实现随意改变div任意属性的名称和值(部分原生js实现)
2013/05/28 Javascript
jQuery选择器源码解读(五):tokenize的解析过程
2015/03/31 Javascript
jQuery中extend函数详解
2015/07/13 Javascript
通过隐藏iframe实现无刷新上传文件操作
2016/03/16 Javascript
JS回调函数简单用法示例
2017/02/09 Javascript
canvas实现简易的圆环进度条效果
2017/02/28 Javascript
vue引入ueditor及node后台配置详解
2018/01/03 Javascript
JavaScript中join()、splice()、slice()和split()函数用法示例
2018/08/24 Javascript
详解适配器在JavaScript中的体现
2018/09/28 Javascript
开发中常用的25个JavaScript单行代码(小结)
2019/06/28 Javascript
[43:36]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
全面解读Python Web开发框架Django
2014/06/30 Python
python简单商城购物车实例代码
2018/03/15 Python
python3.4.3下逐行读入txt文本并去重的方法
2018/04/29 Python
基于python 爬虫爬到含空格的url的处理方法
2018/05/11 Python
使用Python写一个量化股票提醒系统
2018/08/22 Python
Python中__slots__属性介绍与基本使用方法
2018/09/05 Python
PyCharm鼠标右键不显示Run unittest的解决方法
2018/11/30 Python
详解Python3 对象组合zip()和回退方式*zip
2019/05/15 Python
简单了解python 生成器 列表推导式 生成器表达式
2019/08/22 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
2019/10/24 Python
使用Python的Turtle库绘制森林的实例
2019/12/18 Python
Numpy 理解ndarray对象的示例代码
2020/04/03 Python
Python运算符+与+=的方法实例
2021/02/18 Python
python源文件的字符编码知识点详解
2021/03/04 Python
HTML5 Canvas实现玫瑰曲线和心形图案的代码实例
2014/04/10 HTML / CSS
俄罗斯Sportmarket体育在线商店:用于旅游和户外活动
2019/11/12 全球购物
Shell脚本如何向终端输出信息
2014/04/25 面试题
妇科医生自荐信
2013/11/05 职场文书
高二学生评语大全
2014/04/25 职场文书
一次项目中Thinkphp绕过禁用函数的实战记录
2021/11/17 PHP
MySQL数据库之存储过程 procedure
2022/06/16 MySQL