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中的WSGI接口
May 11 Python
python导入时小括号大作用
Jan 10 Python
Python 专题六 局部变量、全局变量global、导入模块变量
Mar 20 Python
Python enumerate函数功能与用法示例
Mar 01 Python
Puppeteer使用示例详解
Jun 20 Python
PyCharm使用Docker镜像搭建Python开发环境
Dec 26 Python
python 正则表达式参数替换实例详解
Jan 17 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
Jun 08 Python
利用Python实现Json序列化库的方法步骤
Sep 09 Python
Python创建简单的神经网络实例讲解
Jan 04 Python
用python批量解压带密码的压缩包
May 31 Python
Python图像处理库PIL详细使用说明
Apr 06 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获取网卡地址的代码
2008/04/09 PHP
php 文件上传代码(限制jpg文件)
2010/01/05 PHP
PHP实现的多文件上传类及用法示例
2016/05/06 PHP
JavaScript 选中文字并响应获取的实现代码
2011/08/28 Javascript
jquery将一个表单序列化为一个对象的方法
2013/12/02 Javascript
NodeJS Express框架中处理404页面一个方式
2014/05/28 NodeJs
JavaScript中的原型和继承详解(图文)
2014/07/18 Javascript
jquery动态分页效果堪比时光网
2014/09/25 Javascript
JQuery入门基础小实例(1)
2015/09/17 Javascript
javascript电商网站抢购倒计时效果实现
2015/11/19 Javascript
jQuery.cookie.js实现记录最近浏览过的商品功能示例
2017/01/23 Javascript
JS简单获取当前年月日星期的方法示例
2017/02/07 Javascript
简单实现js上传文件功能
2017/08/21 Javascript
jquery根据name取得select选中的值实例(超简单)
2018/01/25 jQuery
PostgreSQL Node.js实现函数计算方法示例
2019/02/12 Javascript
Vue+Express实现登录注销功能的实例代码
2019/05/05 Javascript
详解Vue+elementUI build打包部署后字体图标丢失问题
2020/07/13 Javascript
在Python中操作时间之strptime()方法的使用
2020/12/30 Python
Python中.py文件打包成exe可执行文件详解
2017/03/22 Python
python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE方法
2017/05/24 Python
使用Python从零开始撸一个区块链
2018/03/14 Python
python直接获取API传递回来的参数方法
2018/12/17 Python
解决pytorch报错:AssertionError: Invalid device id的问题
2020/01/10 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
2020/05/25 Python
python使用scapy模块实现ping扫描的过程详解
2021/01/21 Python
使用CSS3实现字体颜色渐变的实现
2020/08/10 HTML / CSS
购买澳大利亚最好的服装和内衣在线:BONDS
2016/10/14 全球购物
国家地理在线商店:Shop National Geographic
2018/06/30 全球购物
武汉瑞得软件笔试题
2015/10/27 面试题
Ajax实现页面无刷新留言效果
2021/03/24 Javascript
白酒市场开发计划书
2014/01/09 职场文书
优秀高中生事迹材料
2014/02/11 职场文书
3分钟演讲稿
2014/04/30 职场文书
干部选拔任用方案
2014/05/26 职场文书
python实现语音常用度量方法的代码详解
2021/05/25 Python
十大最强火系宝可梦,喷火龙上榜,第一名有双火属性
2022/03/18 日漫