#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:
Как насчет добавления сценария на удаленную машину, который запускается при запуске, чтобы он сообщил вам, когда он будет готов.