23

Продолжение поста «Как я случайно "спас" сервер, ничего не делая»5

Итак, пришло время повторить механизм описаной байки или мифа про перезагрузку сервера с помощью CD-ROM'a. Собиралось из того, что было на коленках.

Напомню, что целью эксперимета является поддержка работоспособности "сервера" под виндой, который время от времени может зависнуть. Напротив него стоит машина с линуксом, единственной задачей которой является слежение за наличием "сервера" в сети. В случае, если "сервер" пропал из сетки, линкус должен перезагрузить его с помощью CD-ROMa

Сначала опишем методику и набор компонентов для симуляции ситуации, внизу будет видео работы всего этого процесса.

Офисный набор "сделай сам":

  1. Потенциальная жертва с непростой судьбой, которая должна периодически крашиться да так, что по сети не будет пинговаться. Комп с Windows 11, расшарен доступ по RDP, ip-адрес: 192.168.1.57. Далее по тексту - просто Жертва

  2. Страж для бесперебойной работы первого компа, тыкающий его в кнопку ресета с помощью DVD-ROM'a. Сорян, но настоящий CD-ROM не отыскался - их время прошло... Здесь стоит Ubuntu, выполняется скрипт, который управляет системой надзора и тыкания в ресет. Ip - 192.168.1.56, компы находятся в локалке.

  3. Перфоратор BOSH, который дает дополнительную нагрузку и увеличивает трение для Жертвы, так как в процессе отладки выяснилось, что после тыкания приводом комп скользит по полу.

  4. Настольная игра, несколько художественных и не очень произведений для выравнивания уровня и придания соосности тестовой системе.

Продолжение поста «Как я случайно "спас" сервер, ничего не делая» Текст, Сервер, Смекалка, Ответ на пост, Windows, Reset, Эксперимент, IT, Офисные будни, Linux, Видео, Вертикальное видео, Длиннопост, Волна постов

Базовое положение компов - DVD не достает до кнопки ресета сантиметров на десять

Продолжение поста «Как я случайно "спас" сервер, ничего не делая» Текст, Сервер, Смекалка, Ответ на пост, Windows, Reset, Эксперимент, IT, Офисные будни, Linux, Видео, Вертикальное видео, Длиннопост, Волна постов

Фундамент для линукса

Продолжение поста «Как я случайно "спас" сервер, ничего не делая» Текст, Сервер, Смекалка, Ответ на пост, Windows, Reset, Эксперимент, IT, Офисные будни, Linux, Видео, Вертикальное видео, Длиннопост, Волна постов

Шулыга для ресета (из соплей и палок)

Продолжение поста «Как я случайно "спас" сервер, ничего не делая» Текст, Сервер, Смекалка, Ответ на пост, Windows, Reset, Эксперимент, IT, Офисные будни, Linux, Видео, Вертикальное видео, Длиннопост, Волна постов

Стенд в сборе и готов к работе

Сценарий следующий: на линуксе запущен скрипт, который каждые 5 секунд пингует Жертву. Если три попытки пинга подряд уходят без ответа, выдвигается DVD-ROM, который нажимает на ресет Жертвы. Далее идет ожидание в течении минуты (даем время на перезагрузку) и все повторяется заново.

Для симуляции "выпадения из сети" Жертвы на ней через RDP выполняется батничек, содержащий такую строчку:

netsh interface set interface "Ethernet 3" admin=disable

При загрузке винды в планировщике задач выполняется соответственно

netsh interface set interface "Ethernet 3" admin=enable

На Убунте лежит скрипт

#!/bin/bash

IP_TO_PING="192.168.1.57" # IP-адрес для проверки

PING_COUNT=3 # Максимальное количество неудачных попыток

DEVICE="/dev/sr0" # DVD-ROM

CHECK_INTERVAL=5 # Пауза между попытками в секундах

# Проверки связи с Жертвой

is_reachable() {

ping -c 1 "$IP_TO_PING" &>/dev/null

return $?

}

echo "Начинаю мониторинг доступности $IP_TO_PING..."

while true; do

failure_count=0

while ! is_reachable; do

((failure_count++))

echo "$(date): Нет ответа от $IP_TO_PING. Неудач: $failure_count"

if [ "$failure_count" -ge "$PING_COUNT" ]; then

echo "$(date): Ахтунг! Делаем Hard Reset с помощью DVD-ROM'a!!!"

# Выдвигаем DVD-привод

eject "$DEVICE"

# Ждём 1 секунду

sleep 1

# Задвигаем DVD-привод обратно

eject -t "$DEVICE"

# Пауза 1 минута чтобы подождать загрузки Жертвы

echo "$(date): Ожидание 1 минуты перед новой проверкой..."

sleep 60

echo "$(date): Продолжаем наблюдение"

# Сброс счётчика попыток

failure_count=0

break

fi

sleep "$CHECK_INTERVAL"

done

if is_reachable; then

echo "$(date): узел $IP_TO_PING доступен."

fi

sleep "$CHECK_INTERVAL"

done

А вот и результат работы стендовой модели ))

Офисные будни

6.5K постов16.9K подписчика

Правила сообщества

В связи с массовой активностью небратьев, ответы на волны негатива в отношении сотрудников правоохранительных органов будут выноситься из сообщества, их авторы блокироваться.

-не нарушайте вежливость. За нарушение вежливости -бан, ибо это отталкивает посетителей и авторов.

- не нарушайте правила Pikabu и чтите закон.

- добавляйте посты связанные с тематикой сообщества;
-делитесь опытом организации жизни  в офисе и проживания на работе;
-делитесь управленческим опытом;


Бан за неуместную настойчивость: если вы активно, по несколько раз в неделю, в течение длительного времени размещаете сообщения низкого качества, простецкие и незамысловатые, не ориентированные на интересы аудитории, вы отправляетесь в бан сообщества. Ради качества контента.