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中的localtime()方法使用详解
May 22 Python
Python减少循环层次和缩进的技巧分析
Mar 15 Python
浅析python打包工具distutils、setuptools
Apr 20 Python
python控制windows剪贴板,向剪贴板中写入图片的实例
May 31 Python
Python中文件的写入读取以及附加文字方法
Jan 23 Python
python仿抖音表白神器
Apr 08 Python
Python分支语句与循环语句应用实例分析
May 07 Python
Python3的高阶函数map,reduce,filter的示例详解
Jul 23 Python
浅谈如何使用python抓取网页中的动态数据实现
Aug 17 Python
python实现PolynomialFeatures多项式的方法
Jan 06 Python
python - timeit 时间模块
Apr 06 Python
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
Oct 16 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树的深度编历生成迷宫及A*自动寻路算法实例分析
2015/03/10 PHP
php将HTML表格每行每列转为数组实现采集表格数据的方法
2015/04/03 PHP
Yii rules常用规则示例
2016/03/15 PHP
Mac系统下安装PHP Xdebug
2018/03/30 PHP
PHP延迟静态绑定使用方法实例解析
2020/09/05 PHP
非常漂亮的JS代码经典广告
2007/10/21 Javascript
JavaScript中几种常见排序算法小结
2011/02/22 Javascript
JQuyer $.post 与 $.ajax 访问WCF ajax service 时的问题需要注意的地方
2011/09/20 Javascript
鼠标放在图片上显示大图的JS代码
2013/03/26 Javascript
javascript中常用编程知识
2013/04/08 Javascript
jQuery实现 注册时选择阅读条款 左右移动
2013/04/11 Javascript
jQuery实现点击标题输入详细信息
2013/04/16 Javascript
js实现连个数字相加而不是拼接的方法
2014/02/23 Javascript
jquery实现鼠标滑过后动态图片提示效果实例
2015/08/10 Javascript
文本框只能输入数字的js代码(含小数点)
2016/07/10 Javascript
微信小程序 MD5的方法详解及实例代码
2017/03/10 Javascript
ES6中的箭头函数实例详解
2017/04/06 Javascript
canvas实现弧形可拖动进度条效果
2017/05/11 Javascript
微信小程序ibeacon三点定位详解
2018/10/31 Javascript
vue-router命名视图的使用讲解
2019/01/19 Javascript
详解ng-alain动态表单SF表单项设置必填和正则校验
2019/06/11 Javascript
js实现自动播放匀速轮播图
2020/02/06 Javascript
python两种遍历字典(dict)的方法比较
2014/05/29 Python
在Python中使用lambda高效操作列表的教程
2015/04/24 Python
在Linux系统上部署Apache+Python+Django+MySQL环境
2015/12/24 Python
Python中.py文件打包成exe可执行文件详解
2017/03/22 Python
python 自动轨迹绘制的实例代码
2019/07/05 Python
解决django中ModelForm多表单组合的问题
2019/07/18 Python
python实发邮件实例详解
2019/11/11 Python
银行会计财务工作个人的自我评价
2013/10/29 职场文书
程序员求职信
2014/04/16 职场文书
加强作风建设演讲稿
2014/10/24 职场文书
财产分割协议书范本
2014/11/03 职场文书
2014年社区宣传工作总结
2014/12/02 职场文书
复兴之路纪录片观后感
2015/06/02 职场文书
springboot拦截器无法注入redisTemplate的解决方法
2021/06/27 Java/Android