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解释器理解Python中的字节码
Apr 01 Python
详解Python的Django框架中Manager方法的使用
Jul 21 Python
读写json中文ASCII乱码问题的解决方法
Nov 05 Python
python中pandas.DataFrame排除特定行方法示例
Mar 12 Python
Python3.x对JSON的一些操作示例
Sep 01 Python
为什么入门大数据选择Python而不是Java?
Mar 07 Python
Python DataFrame 设置输出不显示index(索引)值的方法
Jun 07 Python
Python中遍历列表的方法总结
Jun 27 Python
如何解决django-celery启动后迅速关闭
Oct 16 Python
如何解决cmd运行python提示不是内部命令
Jul 01 Python
python实现手机推送 代码也就10行左右
Apr 12 Python
基于Python实现nc批量转tif格式
Aug 14 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+mysqli使用面向对象方式更新数据库实例
2015/01/29 PHP
浅谈json_encode用法
2015/03/05 PHP
javascript+php实现根据用户时区显示当地时间的方法
2015/03/11 PHP
php 实现301重定向跳转实例代码
2016/07/18 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
2017/08/04 PHP
php实现的中秋博饼游戏之掷骰子并输出结果功能详解
2017/11/06 PHP
Laravel 对某一列进行筛选然后求和sum()的例子
2019/10/10 PHP
一个选择最快的服务器转向代码
2009/04/27 Javascript
Jquery Ajax学习实例3 向WebService发出请求,调用方法返回数据
2010/03/16 Javascript
js 获取和设置css3 属性值的实现方法
2013/05/06 Javascript
JS中attr和prop属性的区别以及优先选择示例介绍
2014/06/30 Javascript
jQuery入门介绍之基础知识
2015/01/13 Javascript
Javascript中With语句用法实例
2015/05/14 Javascript
一个字符串中出现次数最多的字符 统计这个次数【实现代码】
2016/04/29 Javascript
浅谈Angular路由复用策略
2017/10/04 Javascript
jQuery中可见性过滤器简单用法示例
2018/03/31 jQuery
Python strip lstrip rstrip使用方法
2008/09/06 Python
Python socket.error: [Errno 98] Address already in use的原因和解决方法
2014/08/25 Python
Python中字符编码简介、方法及使用建议
2015/01/08 Python
Python实现点阵字体读取与转换的方法
2019/01/29 Python
Python minidom模块用法示例【DOM写入和解析XML】
2019/03/25 Python
解析PyCharm Python运行权限问题
2020/01/08 Python
基于Python爬取爱奇艺资源过程解析
2020/03/02 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
2020/03/30 Python
Selenium自动化测试工具使用方法汇总
2020/06/12 Python
CSS3 倾斜的网页图片库实例教程
2009/11/14 HTML / CSS
HTML5 video 事件应用示例
2014/09/11 HTML / CSS
国旗下的演讲稿
2014/05/08 职场文书
学生会竞选演讲稿纪检部
2014/08/25 职场文书
科级干部群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
银行反四风对照检查材料
2014/09/29 职场文书
大足石刻导游词
2015/02/02 职场文书
小学六一儿童节活动开幕词
2016/03/04 职场文书
关于食品安全的演讲稿范文(三篇)
2019/10/21 职场文书
浅谈Redis存储数据类型及存取值方法
2021/05/08 Redis
Golang入门之计时器
2022/05/04 Golang