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 相关文章推荐
两个命令把 Vim 打造成 Python IDE的方法
Mar 20 Python
详解Swift中属性的声明与作用
Jun 30 Python
python模拟表单提交登录图书馆
Apr 27 Python
基于tensorflow加载部分层的方法
Jul 26 Python
关于python列表增加元素的三种操作方法
Aug 22 Python
Python中Subprocess的不同函数解析
Dec 10 Python
python lambda函数及三个常用的高阶函数
Feb 05 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
May 09 Python
Python实现打包成库供别的模块调用
Jul 13 Python
pycharm全局搜索的具体步骤
Jul 28 Python
Python抓包并解析json爬虫的完整实例代码
Nov 03 Python
python读取pdf格式文档的实现代码
Apr 01 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中防止直接访问或查看或下载config.php文件的方法
2012/07/07 PHP
[原创]php逐行读取txt文件写入数组的方法
2015/07/02 PHP
javascript 获取所有id中包含某关键字的控件的实现代码
2010/11/25 Javascript
Juqery Html(),append()等方法的Bug解决方法
2010/12/13 Javascript
避免回车键导致的页面无意义刷新的解决方法
2011/04/12 Javascript
js前台分页显示后端JAVA数据响应
2013/03/18 Javascript
jquery遍历筛选数组的几种方法和遍历解析json对象
2013/12/13 Javascript
JqueryMobile动态生成listView并实现刷新的两种方法
2014/03/05 Javascript
javascript闭包入门示例
2014/04/30 Javascript
让你一句话理解闭包(简单易懂)
2016/06/03 Javascript
Ionic如何实现下拉刷新与上拉加载功能
2016/06/03 Javascript
bootstrap导航条实现代码
2016/12/28 Javascript
webstorm添加vue.js支持的方法教程
2017/07/05 Javascript
详解Nodejs 通过 fs.createWriteStream 保存文件
2017/10/10 NodeJs
微信小程序实现团购或秒杀批量倒计时
2020/11/01 Javascript
Vue之beforeEach非登录不能访问的实现(代码亲测)
2019/07/18 Javascript
js判断浏览器的环境(pc端,移动端,还是微信浏览器)
2020/12/24 Javascript
vue组件开发之slider组件使用详解
2020/08/21 Javascript
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
2018/02/21 Python
人生苦短我用python python如何快速入门?
2018/03/12 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
2018/11/29 Python
使用Python横向合并excel文件的实例
2018/12/11 Python
python开发游戏的前期准备
2019/05/05 Python
Django网络框架之HelloDjango项目创建教程
2019/06/06 Python
基于Python的Post请求数据爬取的方法详解
2019/06/14 Python
python读写csv文件方法详细总结
2019/07/05 Python
Django实现发送邮件功能
2019/07/18 Python
pandas DataFrame运算的实现
2020/06/14 Python
selenium+python实现基本自动化测试的示例代码
2021/01/27 Python
简历的自我评价范文
2014/02/04 职场文书
《草虫的村落》教学反思
2014/02/16 职场文书
追悼会主持词
2014/03/20 职场文书
学习方法演讲稿
2014/05/10 职场文书
捐献物资倡议书范文
2014/05/19 职场文书
反四风问题学习心得体会
2016/01/22 职场文书
Redis过期数据是否会被立马删除
2022/07/23 Redis