【SSH、Python】ScpCmdWrapper-使用scp命令上传下载文件工具类

155 阅读1分钟
import os
# scp guide from https://www.runoob.com/linux/linux-comm-scp.html


class ScpCmdWrapper:
    """ 使用scp命令上传下载文件工具类,但是我使用这个工具类会卡死.... """

    def __init__(self, remote_username, remote_ip, remote_port):
        """ 初始化远程服务器的信息 """
        self.remote_username = remote_username
        self.remote_ip = remote_ip
        self.remote_port = remote_port

    def scp_upload_file_to_remote(self, local_folder, remote_folder):
        """ 上传'文件/文件夹'到服务器"""
        remote_username = self.remote_username
        remote_ip = self.remote_ip
        remote_port = self.remote_port
        # 无需添加报错信息,scp自带报错提示
        os.system(
            f'scp -P {remote_port} -r {local_folder} {remote_username}@{remote_ip}:{remote_folder}')

    def scp_download_file_from_remote(self, local_folder, remote_folder):
        """ 下载'文件/文件夹'到本地"""
        remote_username = self.remote_username
        remote_ip = self.remote_ip
        remote_port = self.remote_port
        os.system(
            f'scp -P {remote_port} -r {remote_username}@{remote_ip}:{remote_folder} {local_folder}')


# if __name__ == '__main__':
#     scp = ScpCmdWrapper()
#     scp.scp_download_file_from_remote(
#         remote_username='lin', remote_ip='192.168.1.6', remote_port='22', remote_folder='/home/lin/桌面/mycode/test.css', local_folder=r'D:\PYproject\PyScript\11ssh登录菜单选择脚本(版本1)\sshOption\test')
    # remote_folder = rf'D:\PYproject\PyScript\11ssh登录菜单选择脚本(版本1)\sshOption\test\click.py'
#     # local_folder = '/home/lin/桌面/mycode/'
#     # SCP(remote_username='lin', remote_ip='192.168.1.6', remote_port='22').scp_upload_file_to_remote(local_folder=local_folder,remote_folder=remote_folder)