import paramiko
import os
import sys
import time
import zipfile

hostname=""
username=""
password=""
port=222

if sys.argv[3] == 'pro':
 hostname="000.luojigou.vip"
 username="admin"
 password='FUpnUQ8aLpngnEW'
else:
 hostname="local.luojigou.vip"
 username="root" 
 password='RDefC4Rh&I0VN1j1'
 port=22


############################## 
############################## 
############################## 

transport = paramiko.Transport((hostname, port))

transport.connect(username=username, password=password)

############################## 
############################## 
############################## 

sftp = paramiko.SFTPClient.from_transport(transport)

# transport.close(),
############################## 
############################## 
############################## 

# 创建SSH对象
ssh = paramiko.SSHClient()

# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname=hostname, port=port, username=username, password=password,allow_agent=False,look_for_keys=False)

############################## 
##############################
############################## 

local_path = os.getcwd() + "\dist.zip"

target_file_name = sys.argv[2]

remote_path = sys.argv[1]

remote_file_name = remote_path + target_file_name

print("本地文件地址: " + local_path )
print("远程目录地址: " + remote_file_name)

srmdir_all_folder = os.getcwd() + '/dist'  # 文件夹路径

zip_file_path = srmdir_all_folder + ".zip"  # 压缩文件路径

print("打包中.....🍗")
def make_zip(source_dir, output_filename):
    zipf = zipfile.ZipFile(output_filename, 'w')
    pre_len = len(os.path.dirname(source_dir))
    for parent, _, filenames in os.walk(source_dir):
        for filename in filenames:
            pathfile = os.path.join(parent, filename)
            arcname = pathfile[pre_len:].strip(os.path.sep)     #相对路径
            zipf.write(pathfile,  arcname.replace('/dist', ''), zipfile.ZIP_DEFLATED)
    zipf.close()

make_zip(srmdir_all_folder, zip_file_path)

time.sleep(1)
print("打包完成.....😎")

print("上传中.....💪")
sftp.put(local_path,  remote_file_name + "/dist.zip")

time.sleep(1)

cmd1 = "unzip -o -d " + remote_file_name + " " + remote_file_name + "/dist.zip"

stdin, stdout, stderr= ssh.exec_command(cmd1)

result = stdout.read()

print("上传成功🎉🎉🎉🎉")

transport.close()

ssh.close()