24 lines
2.7 KiB
Markdown
24 lines
2.7 KiB
Markdown
|
||
# suspend_miners.py
|
||
|
||
1. Ініціалізація списку команд для пошуку: commands_to_find містить список команд, які скрипт має шукати в процесах системи.
|
||
|
||
2. Пошук процесів: Для кожної команди зі списку commands_to_find скрипт використовує команду pgrep для пошуку процесів, які відповідають заданій команді.
|
||
|
||
3. Якщо знайдено хоча б один процес:
|
||
|
||
* Отримання інформації про сервери: Якщо скрипт ще не отримав інформацію про сервери, він викликає функцію get_server_info() для отримання даних про всі сервери, які керуються Pterodactyl. Ця функція запитує API Pterodactyl для отримання інформації про сервери та повертає словник, де ключами є UUID серверів, а значеннями — їх ID.
|
||
|
||
* Обробка кожного знайденого процесу: Для кожного знайденого процесу виконується послідовність кроків:
|
||
|
||
* Знаходиться батьківський процес (PPID) за допомогою функції find_parent_pid().
|
||
* Використовуючи батьківський процес, знаходиться UUID контейнера за допомогою функції find_uuid_by_ppid().
|
||
* Якщо знайдено UUID та він існує у словнику server_info_by_uuid, знаходиться ID сервера.
|
||
* Виконується запит до API Pterodactyl для зупинки сервера, пов'язаного з цим UUID.
|
||
* Якщо не знайдено жодного процесу: Якщо в жодному випадку не знайдено жодної з команд зі списку commands_to_find, скрипт завершить свою роботу.
|
||
|
||
4. Відправка запитів до Pterodactyl API: Якщо знайдено сервер для зупинки, скрипт надсилає запит до Pterodactyl API для зупинки сервера. Відповідь API виводиться у консоль.
|
||
* Після призупинення серера через Pterodactyl API щераз зупиняємо контейнер по UUID
|
||
|
||
5. Скрипт завершує свою роботу, якщо жодного процесу не знайдено, або після того, як були оброблені всі знайдені процеси.
|