diff --git a/hlna.py b/hlna.py index 70025ef..7120e3f 100755 --- a/hlna.py +++ b/hlna.py @@ -5,6 +5,7 @@ import sys import zlib import time import struct +import tarfile import logging import datetime import requests @@ -12,7 +13,6 @@ import subprocess import yaml import click -import zipfile import colorama from pathlib import Path @@ -67,41 +67,44 @@ def hlna(): @hlna.command(help='Восстановление бэкапов серверов в ') @click.argument('g', nargs=1) +@click.option('-m', default='all', help="Название карты для запуска или all для запуска всех карт") @click.option('-d', required=True, help="Путь до zip архива") -def restore(g, d): +def restore(g, m, d): """Получение пути к файлам внутри архива""" - with zipfile.ZipFile(d, 'r') as zip_file: - files = zip_file.namelist() + with tarfile.open(d, 'r') as tar_file: + files = tar_file.namelist() """Извлечение файлов""" for i in files: - with zipfile.ZipFile(d, 'r') as zip_file: + with tar_file.extract(d, 'r:gz') as tar_file: path_extarct = "./" if g == 'test' else "/" - zip_file.extract(i, path_extarct) + tar_file.extract(i, path_extarct) print(i, colorama.Fore.GREEN + "- перемещен" + colorama.Style.RESET_ALL) print_line(f"Бэкап {d} восстановлен", flag="GREEN") @hlna.command(help='Бэкап серверов выбранной игры > {dir_logs}{date} 2>&1") with open(f"{dir_logs}{date}.log", "a") as f: f.write(f"[{t}] Сервер {i} перемещён из {state_msg}\n") if x == 0: - print_line(f"Готов - {i}", flag="GREEN") #start = "start" if e else "stop" enable = "enable" if e else "disable" - os.system(f"systemctl --user {enable} ark_{i}") + os.system(f"systemctl --user {enable} ark_{i.lower()}") + print_line(f"Выполнено для сервера- {i}", flag="GREEN") else: print_line(f"Ошибка перемещения {i}", flag="RED") except: @@ -899,8 +917,10 @@ def start_stop(action, g, m): def read_yaml(list_config=list_config, flag=True, m="", g=""): """Читает конфиги активных или неактивных карт в зависимости от флага и отдаёт данные туда где их запросили""" + print_line("Вход в read_yaml", flag="RED") g = g.lower() if g == "ark": + print_line("Вход в арк в чтении", flag="RED") if m == "all": list_config=list_config path_yaml = f"{dir_maps_ark}{list_config}" if flag else f"{dir_deactivated}{list_config}" @@ -908,6 +928,7 @@ def read_yaml(list_config=list_config, flag=True, m="", g=""): path_yaml = dir_config + "config" with open(path_yaml, "r") as yamlfile: data = yaml.load(yamlfile, Loader=yaml.FullLoader) + print_line("Выход из read_yaml", flag="RED") return data[0] # возвращаем словарь со всеми значениями @@ -936,14 +957,16 @@ def choose_map(g, m, list_config=list_config): print_line('Найдены сервера с этой картой', flag="CYAN") for i, map in enumerate(name_servers): print_line(f"{i + 1}) {map}", flag="CYAN") - while True: - try: - x = input("Выберите сервер из списка, либо несколько через запятую: ").split(',') - x = [int(i) for i in x] - break - except: - print_line("Неправильный ввод", flag="RED") - print(name_servers) + if i != 0: + while True: + try: + x = input("Выберите сервер из списка, либо несколько через запятую: ").split(',') + x = [int(i) for i in x] + break + except: + print_line("Неправильный ввод", flag="RED") + else: + x = [1] for i in x: new_arr.append(name_servers[i - 1]) print_line(f"Выбранные сервера: {name_servers}", flag="CYAN")