Для мониторинга/восстановления контроля над «нестабильным»/зависшим сервером я бы посоветовал использовать аппаратное обеспечение или, если это не удается, программный сторожевой таймер; в Debian вы можете установить его с помощью:
sudo apt-get install watchdog
Затем вы редактируете /etc/watchdog.conf
и добавляете пороги или тесты; по моему мнению, сторожевой таймер также активируется таким образом, что если ядро не видит его в течение некоторого времени, оно перезагружается. например если программная подпрограмма не общается в фиксированное время с /dev/watchdog0
или чем-то подобным.
Например, вы можете определить пороги нагрузки в /etc/watchdog.conf
:
max-load-1 = 40
max-load-5 = 18
max-load-15 = 12
Имейте в виду, что некоторые платы/чипсеты поставляются со встроенными сторожевыми таймерами; если я не ошибаюсь, Arm A20 — один из них.
От man watchdog
Ядро Linux может перезагрузить систему, если возникнут серьезные проблемы. обнаружено. Это может быть реализовано с помощью специального сторожевого устройства или через чуть менее надежный программный сторожевой таймер внутри ядра. В любом случае должен быть демон, сообщающий ядру система работает нормально. Если демон перестанет это делать, система перезагрузить.
сторожевой пес — такой демон. Он открывает /dev/watchdog и продолжает писать в достаточно часто, чтобы ядро не сбрасывалось, по крайней мере, один раз за минута. Каждая запись откладывает время перезагрузки еще на одну минуту. После минута бездействия аппаратного сторожевого таймера вызовет сброс. В в случае программного сторожевого таймера возможность перезагрузки будет зависеть от состояние машин и прерываний.
Демон сторожевого таймера может быть остановлен без перезагрузки, если устройство /dev/watchdog закрыто корректно, если только ваше ядро не скомпилировано с включенной опцией CONFIG_WATCHDOG_NOWAYOUT.
см. также Raspberry Pi и Arduino: создание надежных систем с помощью сторожевых таймеров
\ d
- это Perl-совместимое расширение регулярных выражений (PRCE): ваша версия grep
может поддерживать это с параметром -P
grep -P '\d{1,3}\.\d{1,3}\.\d\.\d{1,3}'
В противном случае вы можете использовать [0-9]
для десятичных цифр; однако обратите внимание, что фигурные скобки являются буквальными в основных регулярных выражениях, поэтому вам либо нужен расширенный режим -E
, либо нужно их экранировать
grep -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]\.[0-9]{1,3}'
или
grep '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\.[0-9]\{1,3\}'
Вы начинаете с использования правильный формат вывода для Nmap для такого рода вещей. Параметр Grepable в Nmap ( -oG
) обеспечивает вывод в удобном для анализа формате, который согласован между версиями, в отличие от обычного вывода, "удобочитаемого человеком". Вот как получить список всех систем с открытым портом 25:
nmap -p 25 --open 10.11.1.1-254 -oG - | awk '/^Host/{print $2}'
Nmap выдаст строку, подобную этой:
Host: 64.13.134.52 (scanme.nmap.org) Ports: 25/open/tcp//smtp///
И команда awk сопоставит ее на основе начала строки "Host" и напечатает второе поле, Айпи адрес.