日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python拷贝文件夹目录和文件_Python 拷贝文件及文件夹到远程主机目录

發布時間:2024/9/3 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python拷贝文件夹目录和文件_Python 拷贝文件及文件夹到远程主机目录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

WechatIMG484.jpeg

創建 scp.py,代碼如下。

import os

import re

import time

import sys

import subprocess

import logging

from logging import handlers

class Logger(object):

# 日志級別關系映射

level_relations = {

'debug':logging.DEBUG,

'info':logging.INFO,

'warning':logging.WARNING,

'error':logging.ERROR,

'crit':logging.CRITICAL

}

def __init__(

self,filename,level='info',when='D',backCount=3,fmt=

'%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'

):

self.logger = logging.getLogger(filename)

format_str = logging.Formatter(fmt) # 設置日志格式

self.logger.setLevel(self.level_relations.get(level)) # 設置日志級別

sh = logging.StreamHandler() # 往屏幕上輸出

sh.setFormatter(format_str) # 設置屏幕上顯示的格式

th = handlers.TimedRotatingFileHandler(

filename=filename,when=when,backupCount=backCount,

encoding='utf-8')# 往文件里寫入# 指定間隔時間自動生成文件的處理器

# 實例化TimedRotatingFileHandler

# interval是時間間隔,backupCount是備份文件的個數,

# 如果超過這個個數,就會自動刪除,when是間隔的時間單位,單位有以下幾種:

# S 秒

# M 分

# H 小時、

# D 天、

# W 每星期(interval==0時代表星期一)

# midnight 每天凌晨

th.setFormatter(format_str)# 設置文件里寫入的格式

# self.logger.addHandler(sh) # 把對象加到logger里

self.logger.addHandler(th)

class Host:

def __init__(self):

# 服務器ip地址

self.host = "111.222.333.444"

# 端口號

self.port = 22

# ssh 用戶名

self.username = "root"

# 密碼

self.password = "1234"

# 獲取當前日期

date = time.strftime("%Y%m%d")

# 記錄當天的日志

self.error_log = Logger('log/' + date + 'error.txt',level='error',fmt='')

self.info_log = Logger('log/' + date + 'info.txt',level='info',fmt='')

def scpFileToRemoteNode(self, local_path, remote_path):

"""

將指定目錄的文件及文件夾上傳到服務器指定目錄

local_path: 本機目錄

remote_path: 遠程服務器目錄

"""

SCP_CMD_BASE = r"""

expect -c "

set timeout 300 ;

spawn scp -P {port} -r {local_path} {username}@{host}:{remote_path} ;

expect *assword* {{{{ send {password}\r }}}} ;

expect *\r ;

expect \r ;

expect eof

"

""".format(

username=self.username,

password=self.password,

host=self.host,

local_path=local_path,

remote_path=remote_path,

port=self.port

)

SCP_CMD = SCP_CMD_BASE.format(local_path = local_path)

p = subprocess.Popen( SCP_CMD , stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)

lines = p.stdout.readlines()

for line in lines:

# 只取有效的信息

line = str(line.strip()).replace('b\'','')

if line.find(self.host) < 0:

if line.find("100%") > 0:

self.info_log.logger.info(line)

else:

self.error_log.logger.error(line)

p.communicate()

os.system(SCP_CMD)

if __name__ == '__main__':

h = Host()

# 本機目錄

local_path = '/private/var/Uploads'

# 遠程服務器目錄

remote_path = '/home'

h.scpFileToRemoteNode(local_path,remote_path)

本機執行

$ python3 scp.py

spawn scp -P 22 -r /private/var/HaI/2021/feb03/Uploads root@111.222.333.444:/home

root@111.222.333.444's password:

5ff41c96a4433.jpg 100% 34KB 211.2KB/s 00:00

5f2bc8e2435eb.jpg 100% 70KB 492.1KB/s 00:00

5ffbe8b529b70.png 100% 10KB 13.0KB/s 00:00

600f8dbe4735d.png 100% 193KB 96.0KB/s 00:02

登錄遠程服務器查看

$ ls /home

Uploads

總結

以上是生活随笔為你收集整理的python拷贝文件夹目录和文件_Python 拷贝文件及文件夹到远程主机目录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。