首页 > 系统相关 >python ssh上传文件到linux并解压

python ssh上传文件到linux并解压

时间:2024-08-20 16:37:33浏览次数:9  
标签:解压 zip python ssh file linux print dir

import paramiko
import os

def upload_and_unzip(local_file, remote_file, zip_dir):
    # 创建SSH客户端
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    private_key_path = r'F:\mysite.pem'
    # 加载私钥文件
    private_key = paramiko.RSAKey.from_private_key_file(private_key_path)
    try:
        # 连接到远程服务器
        ssh.connect('111.111.111.111', username='root', pkey=private_key)

        # 创建zip目录
        ssh.exec_command(f'mkdir -p {zip_dir}')

        # 使用exec_command运行命令
        sftp = ssh.open_sftp()
        sftp.put(local_file, remote_file)
        sftp.close()

        # 解压文件
        stdin, stdout, stderr = ssh.exec_command(f'unzip -o {remote_file} -d {zip_dir}')
        stdout_lines = stdout.readlines()
        stderr_lines = stderr.readlines()

        # 输出解压过程的信息
        if stderr_lines:
            print("ERROR:")
            for line in stderr_lines:
                print(line.strip())
        else:
            print("文件上传并解压成功。")
            print("解压详情:")
            for line in stdout_lines:
                print(line.strip())

    except Exception as e:
        print(f"操作过程中出现错误: {e}")
    finally:
        # 断开连接
        ssh.close()
def listDir(folder):
    listFiles = os.listdir(folder)
    listRet = []
    for file in listFiles:
        fullPath = os.path.join(folder, file)
        if os.path.isfile(fullPath) and file.endswith('.zip'):
            listRet.append(fullPath)
    return listRet

if __name__ == "__main__":
    folder = r'E:\game-client\game\release'
    files = listDir(folder)
    # zip_dir_root = '/home/work/test_dir'
    zip_dir_root = '/home/work/client/game'

    for file in files:
        shortName = os.path.basename(file)
        zip_dir = zip_dir_root + '/game_' + os.path.splitext(shortName)[0]
        remote_file = zip_dir + "/web.zip"
        upload_and_unzip(file, remote_file, zip_dir)
    print("所有文件上传并解压完成。")

upload_and_unzip.py

标签:解压,zip,python,ssh,file,linux,print,dir
From: https://www.cnblogs.com/barrysgy/p/18369743

相关文章

  • Python面试中常见的知识点和问题
    Python面试中常见的知识点和问题,供你参考: ###基础知识1.**数据类型**:  -基本类型:int,float,str,bool  -容器类型:list,tuple,set,dict 2.**控制结构**:  -条件语句:if,elif,else  -循环语句:for,while 3.**函数**:  -定义函数:def......
  • 使用python-slim镜像遇到无法使用PostgreSQL的问题
    前言之前不是把DjangoStarter的docker方案重新搞好了吗一开始demo部署是使用SQLite数据库的,用着没问题,但很快切换到PostgreSQL的时候就遇到问题了…报错docker启动之后,app容器报错django.core.exceptions.ImproperlyConfigured:Errorloadingpsycopg2orpsycopg......
  • Python学习日记(Page.3)
    今日整理方便日后回顾。如有错误欢迎指正。  今天总结一下字符串扩展的内容。第一部分字符串的三种定义方式 单引号name='黑马'   2.双引号name="黑马"   3.三引号name="""黑马"""注:单引号可包含双引号,但不能包含单引号双引号可包含单......
  • CentOS Python 3.12安装
    之前从来没想到我会在安装Python这点上卡住,事实上最近就是在一个CentOS测试机上安装Python时遇到了问题,因此记一下。以往我们使用yum安装python时非常简单:yuminstallpythonoryuminstallpython3最多额外再加装个pip以及python-devel,就算需要某个特定的、yum无法覆盖的......
  • python环境安装之后,cmd输入python回车会打开微软商店
    坑爹!python环境安装之后,cmd输入python回车会打开微软商店最近发现,安装python环境成功之后,可能会出现cmd输入python验证是否安装成功老会打开微软商店!解决,打开系统环境配置,找到刚安装python环境的时候加入的python安装路径你会发现这个windowsapp在python安装目录前面,把w......
  • 在Python中使用MySQL:保姆级指南
    Python是一种广泛使用的高级编程语言,因其简洁易读以及强大的库支持而受到开发者的青睐。当需要在Python程序中处理数据库时,MySQL是一个流行的选择。MySQL是一个开源的关系数据库管理系统,广泛用于Web应用程序的开发。目录第一步:安装MySQL数据库第二步:安装MySQLConnector第......
  • python实用教程(二):安装配置Pycharm及使用(Win10)
    上一篇:python实用教程(一):安装配置anaconda(Win10)-CSDN博客1、简介及下载PyCharm是一款功能强大的Python编辑器,具有跨平台性。是Jetbrains家族中的一个明星产品。下载地址:DownloadPyCharm:ThePythonIDEfordatascienceandwebdevelopmentbyJetBrains由于个人用......
  • LeetCode-Python-3154. 到达第 K 级台阶的方案数(DFS + 数学)
    给你有一个 非负 整数 k 。有一个无限长度的台阶,最低 一层编号为0。Alice 有一个整数 jump ,一开始值为0。Alice从台阶1开始,可以使用 任意 次操作,目标是到达第 k 级台阶。假设Alice位于台阶 i ,一次 操作 中,Alice可以:向下走一级到 i-1 ,但该操作......
  • linux sudo提权
    方法一、1.创建普通用户usernameuseraddusername2.执行以下命令以编辑sudoers文件,实际是vi/etc/sudoersvisudo找到该行内容rootALL=(ALL)ALL,添加username用户,保存退出:wqrootALL=(ALL)ALLusernameALL=(ALL)ALL方法二、1.创建普通用户u......
  • 2024年全国青少年信息素养大赛国赛PYTHON组(C++做法)
    目录前提第一题第二题第三题第四题第五题:第六题前提鄙人是C++学生,所以将PYTHON题做为C++题,还请各位多多海涵!!!部分芝士来自度娘和其它网站温馨提示:题目顺序可能不同,请各位仔细浏览! 第一题题目描述蓝蓝最近学到了一些单词,比如orange(橘子),apple(苹果),pear(梨)。......