Базовое положение компов - DVD не достает до кнопки ресета сантиметров на десять
Шулыга для ресета (из соплей и палок)
Стенд в сборе и готов к работе
Сценарий следующий: на линуксе запущен скрипт, который каждые 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
А вот и результат работы стендовой модели ))