Большой Воронежский Форум
» Техническая поддержка>Как оживить зависшую систему?
Hip-Hop 19:40 29.04.2012
Иногда возникает ситуация, что система перестает отвечать. Система зависла. По ssh до не добраться, но сетевая подсистема жива. (В силу устройства ядра linux) На помощь нам приходят http://en.wikipedia.org/wiki/Magic_SysRq_key . Это "интерфейс" прямого общения с ядром. Даже если система зависла.. можно попытаться вывести её из этого состояния с помощью Magic_SysRq_key или минимизировать возможный ущерб. Мы можем сделать это удаленно. Для этого нужно будет собрать xtables-addons - http://xtables-addons.sourceforge.net/ . Это модули к сетевому фильтру ядра. Нам не нужно пересобирать ядро и патчить iptables. Интересующий нас модуль SYSRQ.

из man xtables-addons:

The SYSRQ target allows to remotely trigger sysrq on the local machine over the network. This can be useful when vital parts of the machine hang, for example an oops ina filesystem causing locks to be not released and processes to get stuck as a result — if still possible, use /proc/sysrq-trigger. Even when processes are stuck, inter‐rupts are likely to be still processed, and as such, sysrq can be triggered through incoming network packets.

Создаем правило на оживляемой машине:

iptables -A INPUT -s 10.10.25.1 -m mac --mac-source aacc:dd:ee:ff -d 10.10.25.7 -p udp --dport 9 -j SYSRQ

оно принимается udp пакет на пор 9 с определенного адреса на определённый + включена дополнительная проверка по мак адресу отправителя, надо заметить, что модуль sysrq допускает и более серьёзную проверку отправителя и исключение подмены (вклинивания) (man xtables-addons).

добавляем пароль для доступа:

echo -n "password" >/sys/module/xt_SYSRQ/parameters/password

Создаём скрипт для оживления системы:

#!/bin/bash/
sysrq_key="s" # the SysRq key(s)
password="password"
seqno="$(date +%s)"
salt="$(dd bs=12 count=1 if=/dev/urandom 2>/dev/null | openssl enc -base64)"
req="$sysrq_key,$seqno,$salt"
req="$req,$(echo -n "$req,$password" | sha1sum | cut -c1-40)"
echo "$req" | netcat -uw1 10.10.25.7 9

где sysrq_key это один из Magic_SysRq_key, а passwd это пароль доступа заданный на оживляемой машине.
[Ответ]
lokil23 19:57 29.04.2012
пап, а ты с кем сейчас разговаривал? (с) [Ответ]
mishel13 21:31 29.04.2012

Сообщение от lokil23:
пап, а ты с кем сейчас разговаривал?

с африкой наверное [Ответ]
elephas 00:44 30.04.2012
тихо мирно с сам собой я веду беседу!!!!!!!!!! [Ответ]
Вверх