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中sort和sorted函数代码解析
Jan 25 Python
NumPy 如何生成多维数组的方法
Feb 05 Python
基于Python中numpy数组的合并实例讲解
Apr 04 Python
django的登录注册系统的示例代码
May 14 Python
Python中利用xpath解析HTML的方法
May 14 Python
用python简单实现mysql数据同步到ElasticSearch的教程
May 30 Python
手把手教你使用Python创建微信机器人
Apr 29 Python
pytorch 固定部分参数训练的方法
Aug 17 Python
详解字符串在Python内部是如何省内存的
Feb 03 Python
python正则表达式实例代码
Mar 03 Python
python pyg2plot的原理知识点总结
Feb 28 Python
python正则表达式re.search()的基本使用教程
May 21 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
微信自定义菜单的处理开发示例
2015/04/16 PHP
PHP文件缓存smarty模板应用实例分析
2016/02/26 PHP
SSO单点登录的PHP实现方法(Laravel框架)
2016/03/23 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
2016/05/11 PHP
laravel 框架实现无限级分类的方法示例
2019/10/31 PHP
jquery 单击li防止重复加载的实现代码
2010/12/24 Javascript
使用JQuery快速实现Tab的AJAX动态载入(实例讲解)
2013/12/11 Javascript
解析JSON对象与字符串之间的相互转换
2013/12/18 Javascript
instanceof和typeof运算符的区别详解
2014/01/06 Javascript
jquery动态添加元素事件失效问题解决方法
2014/05/23 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
2015/08/11 Javascript
jquery实现平滑的二级下拉菜单效果
2015/08/26 Javascript
jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
2015/12/23 Javascript
使用微信内嵌H5网页解决JS倒计时失效问题
2017/01/13 Javascript
React进阶学习之组件的解耦之道
2017/08/07 Javascript
浅谈JavaScript作用域和闭包
2017/09/18 Javascript
使用Python脚本实现批量网站存活检测遇到问题及解决方法
2016/10/11 Python
Python模块WSGI使用详解
2018/02/02 Python
python随机在一张图像上截取任意大小图片的方法
2019/01/24 Python
python isinstance函数用法详解
2020/02/13 Python
Python导入模块包原理及相关注意事项
2020/03/25 Python
python中实现栈的三种方法
2020/12/19 Python
selenium+headless chrome爬虫的实现示例
2021/01/08 Python
加拿大的标志性百货公司:Hudson’s Bay(哈得逊湾)
2019/09/03 全球购物
日本整理专家Marie Kondo的官方在线商店:KonMari
2020/06/29 全球购物
出国签证在职证明
2014/01/16 职场文书
公司晚会主持词
2014/03/22 职场文书
县级文明单位申报材料
2014/05/23 职场文书
购房委托书范本
2014/09/18 职场文书
农业局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
初中优秀学生评语
2014/12/29 职场文书
事业单位年度考核评语
2014/12/31 职场文书
2016国培学习心得体会
2016/01/08 职场文书
Python+Tkinter制作专属图形化界面
2022/04/01 Python
使用Redis实现分布式锁的方法
2022/06/16 Redis
Python安装及建立虚拟环境的完整步骤
2022/06/25 Servers