This commit is contained in:
Евгений Храмов 2023-05-29 23:09:13 +03:00
parent 9de6bde5a5
commit 7700657e73

43
hlna.py

@ -799,10 +799,11 @@ def start_stop(action, g, m):
check_exist_servers(g)
name_servers = choose_map(g, m)
for i in name_servers:
if action == "stop" or action == "restart":
rcon_local(i, c="SaveWorld")
data = read_yaml(i, g="ark", flag=True)
if action == "stop" or action == "restart":
rcon_local(i, "SaveWorld")
x = os.system(f"systemctl --user {action} ark_{data['SessionName'].lower()}.service")
if x == 0:
print_line(f"Готово {action} для {g} {i}", flag="GREEN")
@ -864,41 +865,39 @@ def choose_map(g, m, list_config=list_config):
@hlna.command(help='Отправка команд на игровой сервер через rcon <rcon SaveWorld -m all>')
@click.option('-g', required=True, help="Название игры для запуска. (ark)")
@click.argument('c', nargs=1)
@click.option('-m', required=True, help="Название карты для применения rcon команды")
def rcon(g, m, c):
rcon_local(g, m, c)
def rcon(m, c):
rcon_local(m, c)
def rcon_local(g, m="", c=""):
if g == "ark":
try:
def rcon_local(m, c):
try:
dict_mapname = {}
dict_adminpwd = {}
if list_config:
rcon_ports = []
dict_mapname = {}
dict_adminpwd = {}
for i in list_config:
data = read_yaml(i, g="ark")
dict_mapname[data['RCONPort']] = data['SessionName']
dict_mapname[data['RCONPort']] = data['map']
dict_adminpwd[data['RCONPort']] = data['ServerAdminPassword']
# if m == "all":
# print_line(m, flag="CYAN")
# for rcon_p in dict_mapname:
# rcon_ports.append(rcon_p)
# else:
for rcon_p, name_map in dict_mapname.items():
if name_map in m:
if m == "all":
for rcon_p in dict_mapname:
rcon_ports.append(rcon_p)
else:
for rcon_p, name_map in dict_mapname.items():
if name_map in m:
rcon_ports.append(rcon_p)
for port in rcon_ports:
passwd = dict_adminpwd[port]
with Client('127.0.0.1', port, passwd=str(passwd)) as client:
response = client.run(c)
print_line(f"Rcon выполнен {response} {dict_mapname[port]}", flag="GREEN")
else:
pass
except:
print_line(f"Ошибка отправки команды {c} в {m}", flag="RED")
else:
pass
except:
print_line(f"Ошибка отправки команды {c} в {m}", flag="RED")
def zero(x=""):