import subprocess from aiogram.types import Message, CallbackQuery from app.keyboards.docker_keyboards import container_names_keyboard, container_actions_keyboard async def get_containers(message: Message): sub = subprocess.check_output("docker ps -a").decode() keyboard = container_names_keyboard(sub) await message.answer( text=f"
{sub}
", parse_mode="HTML", reply_markup=keyboard.as_markup() ) async def container_actions(call: CallbackQuery): name = call.data.split("_")[-1] keyboard = container_actions_keyboard(name) await call.message.answer( text=f"Выберите действие для контейнера {name}", parse_mode="HTML", reply_markup=keyboard.as_markup() ) async def do_container_action(call: CallbackQuery): _, action, name = call.data.split("_") match action: case "start": subprocess.run(f"docker start {name}") message = f"Контейнер {name} успешно запущен" case "stop": subprocess.run(f"docker stop {name}") message = f"Контейнер {name} успешно остановлен" case "restart": subprocess.run(f"docker restart {name}") message = f"Контейнер {name} успешно перезапущен" case "delete": subprocess.run(f"docker rm -f {name}") message = f"Контейнер {name} успешно удалён" case _: message = f"Произошла необъяснимая ошибка" await call.message.answer( text=message, )