python paramiko利用sftp上传目录到远程的实例
作者:zdpyouzhe 发布时间:2023-08-10 02:53:23
标签:python,paramiko,sftp
网上大部分都是上传文件,于是个人参照网上一些博客的内容,写了一个把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()
比较匆忙,不足之处可以指出,共同进步。
来源:https://blog.csdn.net/zdpyouzhe/article/details/52953677
0
投稿
猜你喜欢
- 导言:本文一步一步手把手教你打造一个极酷的三层分离的标准滑动门导航菜单,从思路、原理、步骤,手段可谓“无所不用其极”,即便你是菜鸟,相信你看
- 系统环境centos7python2.7先在操作系统安装expect[root@V71 python]# vi 3s.py#!/usr/bi
- 配置文件注释里面有写,懒得用配置文件了代码# 京东云无线路由宝推送import requestsimport jsonimport time
- 这篇文章主要介绍了Python插入Elasticsearch操作方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考
- auth模块是什么auth模块时django自带的用户认证模块开发一个网站的时候,无可避免的需要设计实现网站的用户系统。此时我们需要实现包括
- 题目:一个六位数,分别用2,3,4,5,6乘它,得到的五个新数仍是由原数中的六个数字组成,只是位置不同,则此六位数是多少?function
- MySQL GUI工具很多,本文就常用的Navicat for MySQL与MySQL-Front的特色功能做一个详细介绍与比较。(一)My
- 大家可以先参考官方演示文档:效果图:'''==============3D scatterplot=========
- Javascript中的对像赋值与Java中是一样的,都为引用传递.就是说,在把一个对像赋
- 一、前言前两篇博客讲解了爬虫解析网页数据的两种常用方法,re正则表达解析和beautifulsoup标签解析,所以今天的博客将围绕另外一种数
- 前言最近在使用pytorch的时候,模型训练时,不需要使用forward,只要在实例化一个对象中传入对应的参数就可以自动调用 forward
- 第一种方法: 代码如下:Minimsdn.com为您提供的代码: -- Turn ON [Display IO Info when exec
- 本文实例讲述了python实现对一个完整url进行分割的方法。分享给大家供大家参考。具体分析如下:python对一个完整的url进行分割,将
- Paramiko是一个用于执行SSH命令的Python第三方库,使用该库可实现自动化运维的所有任务,如下是一些常用代码的封装方式,多数代码为
- yaml 文件的应用场景与格式介绍yaml 文件的应用场景yaml其实也类似于 json、txt ,它们都属于一种文本格式。在我们的实际工作
- 一、算术运算符运算符+-*/%**(幂)求次方//(取整除,向下取整)如:9//2 =4二、比较运算符运算符==!=<>(不等于
- 事情是这样的,我写了一个tornado的服务,过程当中我用logging记录一些内容,由于一开始并没有仔细观察tornado自已的日志管理,
- php读写二进制文件可以使用pack和unpack函数。今天要处理一个二进制文件的问题,所以需要用一下,特意了解一下pack的用法,unpa
- 安装pip install websocket-client先来看一下,长连接调用方式:ws = websocket.WebSocketAp
- 本文实例讲述了python通过加号运算符操作列表的方法。分享给大家供大家参考。具体如下:li = ['a', 'b&