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装饰器使用实例:验证参数合法性
Jun 24 Python
Python简单删除列表中相同元素的方法示例
Jun 12 Python
Python 中 Virtualenv 和 pip 的简单用法详解
Aug 18 Python
Python安装模块的常见问题及解决方法
Feb 05 Python
浅析Python3爬虫登录模拟
Feb 07 Python
python操作excel的包(openpyxl、xlsxwriter)
Jun 11 Python
手把手教你如何安装Pycharm(详细图文教程)
Nov 28 Python
深入解析python中的实例方法、类方法和静态方法
Mar 11 Python
python验证身份证信息实例代码
May 06 Python
对Python 检查文件名是否规范的实例详解
Jun 10 Python
Pyspark获取并处理RDD数据代码实例
Mar 27 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
Nov 02 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实例分享之mysql数据备份
2014/05/19 PHP
php实现在服务器上创建目录的方法
2015/03/16 PHP
php对象工厂类完整示例
2018/08/09 PHP
PHP7 参数处理机制修改
2021/03/09 PHP
用JAVASCRIPT如何给<textarea></textarea>赋值
2007/04/20 Javascript
Add a Formatted Table to a Word Document
2007/06/15 Javascript
用JavaScript对JSON进行模式匹配(Part 1-设计)
2010/07/17 Javascript
jQuery实现列表内容的动态载入特效
2015/08/08 Javascript
javascript中sort排序实例详解
2016/07/24 Javascript
ReactNative-JS 调用原生方法实例代码
2016/10/08 Javascript
js给table赋值的实例代码
2016/10/13 Javascript
jQuery自定义多选下拉框效果
2017/06/19 jQuery
vue增删改查的简单操作
2017/07/15 Javascript
JS实现按钮颜色切换效果
2020/09/05 Javascript
写一个移动端惯性滑动&回弹Vue导航栏组件 ly-tab
2018/03/06 Javascript
简单的vuex 的使用案例笔记
2018/04/13 Javascript
Angular6笔记之封装http的示例代码
2018/07/27 Javascript
微信小程序时间控件picker view使用详解
2018/12/28 Javascript
vue+express+jwt持久化登录的方法
2019/06/14 Javascript
Python正则表达式使用范例分享
2016/12/04 Python
Python对字符串实现去重操作的方法示例
2017/08/11 Python
python Matplotlib画图之调整字体大小的示例
2017/11/20 Python
python操作redis方法总结
2018/06/06 Python
浅析Python四种数据类型
2018/09/26 Python
Python实现对特定列表进行从小到大排序操作示例
2019/02/11 Python
matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)
2019/08/06 Python
Python实现串口通信(pyserial)过程解析
2019/09/25 Python
pytorch中的weight-initilzation用法
2020/06/24 Python
Python分析最近大火的网剧《隐秘的角落》
2020/07/02 Python
css3绘制天猫logo实现代码
2012/11/06 HTML / CSS
预备党员群众路线教育实践活动思想汇报2014
2014/10/25 职场文书
质量保证书格式模板
2015/02/27 职场文书
学校趣味运动会开幕词
2016/03/04 职场文书
党风廉政建设心得体会
2019/05/21 职场文书
五年级作文之劳动作文
2019/11/12 职场文书
疑《守望先锋2》A测截图泄露 或将推出新模式、新界面
2022/04/03 其他游戏