Как узнать, включена ли система? - PullRequest
8 голосов
/ 11 октября 2008

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

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

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

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

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

спасибо imkin

Ответы [ 4 ]

12 голосов
/ 11 октября 2008

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

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

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

9 голосов
/ 11 октября 2008

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

7 голосов
/ 11 октября 2008

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

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

3 голосов
/ 11 октября 2008

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

...