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实现rsa算法代码
Feb 17 Python
Python将DataFrame的某一列作为index的方法
Apr 08 Python
Python爬虫实现获取动态gif格式搞笑图片的方法示例
Dec 24 Python
flask session组件的使用示例
Dec 25 Python
Python创建或生成列表的操作方法
Jun 19 Python
解决Python二维数组赋值问题
Nov 28 Python
Python模块的定义,模块的导入,__name__用法实例分析
Jan 07 Python
Python基于Hypothesis测试库生成测试数据
Apr 29 Python
Python Mock模块原理及使用方法详解
Jul 07 Python
python 解决selenium 中的 .clear()方法失效问题
Sep 01 Python
Python Merge函数原理及用法解析
Sep 16 Python
分享7个 Python 实战项目练习
Mar 03 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
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
php 学习资料零碎东西
2010/12/04 PHP
js 页面执行时间计算代码
2009/03/04 Javascript
Javascript 继承实现例子
2009/08/12 Javascript
在javascript中对于DOM的加强
2013/04/11 Javascript
url参数中有+、空格、=、%、&、#等特殊符号的问题解决
2013/05/15 Javascript
js字符串转换成数字与数字转换成字符串的实现方法
2014/01/08 Javascript
jQuery性能优化技巧分析
2015/02/20 Javascript
JavaScript jQuery 中定义数组与操作及jquery数组操作
2015/12/18 Javascript
一个炫酷的Bootstrap导航菜单
2016/12/28 Javascript
详解vue嵌套路由-query传递参数
2017/05/23 Javascript
AngularJS遍历获取数组元素的方法示例
2017/11/11 Javascript
解决npm安装Electron缓慢网络超时导致失败的问题
2018/02/06 Javascript
vue删除html内容的标签样式实例
2018/09/13 Javascript
angularJs在多个控制器中共享服务数据的方法
2018/09/30 Javascript
基于js实现复制内容到操作系统粘贴板过程解析
2019/10/11 Javascript
通过js随机函数Math.random实现乱序
2020/05/19 Javascript
详解Vue中的watch和computed
2020/11/09 Javascript
[03:58]兄弟们,回来开黑了!DOTA2昔日战友招募宣传视频
2016/07/17 DOTA
Python list操作用法总结
2015/11/10 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
2017/01/20 Python
python 读取dicom文件,生成info.txt和raw文件的方法
2019/01/24 Python
对numpy下的轴交换transpose和swapaxes的示例解读
2019/06/26 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
2019/10/12 Python
浅析Django中关于session的使用
2019/12/30 Python
TensorFlow实现checkpoint文件转换为pb文件
2020/02/10 Python
python 将视频 通过视频帧转换成时间实例
2020/04/23 Python
Python中SQLite如何使用
2020/05/27 Python
HTML5+CSS3网页加载进度条的实现,下载进度条的代码实例
2016/12/30 HTML / CSS
CSS3实现水平居中、垂直居中、水平垂直居中的实例代码
2020/02/27 HTML / CSS
HTML5 绘制图像(上)之:关于canvas元素引领下一代web页面的问题
2013/04/24 HTML / CSS
HTML5 canvas基本绘图之绘制曲线
2016/06/27 HTML / CSS
美国旅游网站:Tours4Fun
2017/02/17 全球购物
营销与策划专业毕业生求职信
2013/11/01 职场文书
大型会议策划方案
2014/05/17 职场文书
2015年科学教研组工作总结
2015/07/22 职场文书