Как узнать, включена ли система?

#perl #operating-system #boot #uptime

Вопрос:

Я пишу сценарий, который включается в систему через сеть. А затем мне нужно выполнить несколько команд на другом хосте. Как узнать, включена ли система?

Мой язык программирования-Perl, а целевой хост-RHEL5.

Существует ли какая-либо информация о прерывании ядра или сетевой загрузке, указывающая на включение системы и загрузку ОС?

[В другом сценарии] Мне также было интересно на всякий случай, если я просто включу свою машину вручную. когда точно сказано, что он включен. и когда предполагается, что ОС полностью загрузилась для операции, связанной с сетью, такой как выполнение там сетевой команды. Что делать, если система подключена к DHCP, как удаленная система будет искать эту машину [я думаю, это возможно по mac-адресу. но если я ошибаюсь ].

Если я пропустил какую-либо информацию, пожалуйста, не стесняйтесь спрашивать меня. Если у вас есть какие-либо предложения, чтобы облегчить задачу, пожалуйста, изложите их 🙂

спасибо, имкин

Ответ №1:

Ну, я бы сказал, что система загружается, когда она может выполнить ваш запрос. То есть демон sshd запущен. Это загружено достаточно для ваших целей (я предполагаю — замените любого демона, который вам действительно нужен).

Поэтому я посылал сигнал включения питания и проверял каждые 15-30 секунд, могу ли я подключиться. Если мне не удалось подключиться в течение разумного для этой машины времени (2 минуты или 5 минут или что-то еще), я отправлю предупреждение в службу ИТ-поддержки. Ну, я бы сначала отправил его себе, и только после того, как я расследовал несколько неудач или около того и обнаружил, что все они являются законными, я бы начал отправлять его непосредственно ЕМУ.

DHCP-это совсем другой вопрос. Вам придется начать изучать широковещательную передачу или иметь демона на этой машине «позвонить домой» во время загрузки, чтобы зарегистрировать свой текущий IP-адрес. И ему придется «звонить домой» каждый раз, когда обновление DHCP меняет свой IP-адрес. Это определенно более запутанно. Старайтесь избегать DHCP на таких серверных машинах, если это вообще возможно.

Комментарии:

1. Зачем DHCP менять IP-адрес? DHCP просто означает, что компьютер запрашивает у сети адрес — это не значит, что адрес меняется. Что исправляет адрес, так это маршрутизатор или что-то еще, что отвечает на запрос. Все, что нужно сделать, это сказать маршрутизатору, чтобы он предоставил машине фиксированный IP-адрес.

2. DHCP просто может изменять IP-адреса. Ничто не говорит, что так должно быть. С этим нужно как — то справляться-либо специально настраивать DHCP-сервер, либо иметь дело с изменением IP-адреса.

3. Как правило, не рекомендуется использовать IP-адрес напрямую.

Ответ №2:

На перезагружающейся машине вы можете установить скрипт в свой кронтаб со специальным @reboot утверждением (см. man 5 crontab ). Этот сценарий может отправить какое-либо уведомление на другую машину, уведомляя ее о том, что оно уже запущено.

Комментарии:

1. Мне нравится эта идея о том, что система звонит домой. Сделайте это последним в последовательности загрузки (или, по крайней мере, после служб, которые вас интересуют), и вы будете знать, что система может ответить на ваши последующие запросы.

Ответ №3:

Я думаю, что проверка на sshd звучит как хороший подход.

Что касается проблемы DHCP: если другой компьютер находится в той же подсети, вы можете найти его по MAC-адресу с помощью Net::ARP.

Ответ №4:

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