2008-10-11 13 views
8

Ich schreibe ein Skript, das ein System über das Netzwerk antreibt. Und dann muss ich ein paar Befehle auf dem anderen Host ausführen. Woher weiß ich, ob das System eingeschaltet ist?Woher weiß ich, ob ein System eingeschaltet ist?

Meine Programmiersprache ist Perl und der Zielhost ist RHEL5.

Gibt es irgendwelche Kernel-Interrupt- oder Netzwerk-Boot-Informationen, die anzeigen, dass das System eingeschaltet ist und das Betriebssystem geladen wurde?

[In einem anderen Szenario] Ich fragte mich auch nur für den Fall, wenn ich nur meine Maschine manuell einschalten. Wann wird genau gesagt, dass es eingeschaltet ist. und wann soll das Betriebssystem vollständig für eine netzwerkbezogene Operation wie das Ausführen eines Netzwerkbefehls dort gestartet worden sein. Was ist, wenn das System auf DHCP ist, wie würde ein entferntes System dann nach dieser Maschine suchen [ich denke, dass es über die MAC-Adresse möglich ist. aber wenn ich falsch liege].

Wenn ich irgendwelche Informationen verpasst habe, bitte zögern Sie nicht mich zu fragen. Wenn Sie Vorschläge haben, um die Aufgabe zu erleichtern bitten sie die Oberfläche :)

thanx imkin

Antwort

12

Nun, ich würde sagen, das System gestartet wird, wenn er die Anfrage durchführen kann Sie es gemacht haben. Das heißt, der sshd-Daemon läuft. Das ist genug für Ihre Zwecke gebootet (ich nehme an - ersetzen Sie für welchen Dämon Sie wirklich brauchen).

Also, ich würde das Einschaltsignal senden, und überprüfen Sie alle 15-30 Sekunden, um zu sehen, ob ich eine Verbindung herstellen könnte. Wenn ich keine Verbindung innerhalb einer angemessenen Zeit für diesen Computer hergestellt habe (2 Minuten oder 5 Minuten oder was auch immer), würde ich eine Warnung an das IT-Supportteam senden. Nun, ich würde es mir zuerst schicken, und erst nachdem ich ein paar Fehler untersucht und festgestellt habe, dass alle legitim sind, würde ich es direkt an die IT senden.

DHCP ist eine andere Frage. Sie müssten anfangen, etwas über Broadcasting zu lernen oder einen Daemon auf diesem Rechner während des Hochfahrens "call home" zu haben, um seine aktuelle IP-Adresse zu registrieren. Und es müsste jedes Mal, wenn eine DHCP-Erneuerung seine IP-Adresse änderte, "zu Hause anrufen". Dies ist entschieden verworrener. Versuchen Sie, DHCP auf solchen Server-Rechnern möglichst zu vermeiden.

+0

Warum würde DHCP die IP-Adresse ändern? DHCP bedeutet nur, dass der Computer das Netzwerk nach einer Adresse fragt - dies bedeutet nicht, dass sich die Adresse ändert. Was die Adresse behebt, ist der Router oder was auch immer auf die Anfrage antwortet. Alles, was Sie tun müssen, ist dem Router mitzuteilen, dass er der Maschine eine feste IP-Adresse geben soll. –

+0

DHCP nur * kann * IP-Adressen ändern. Nichts sagt es * muss *. Man muss sich damit auseinandersetzen - entweder den DHCP-Server speziell konfigurieren oder sich mit der IP-Änderung befassen. – Tanktalus

+0

Es ist generell keine gute Idee, die IP-Adresse direkt zu verwenden. –

7

Ich denke, die Überprüfung für sshd klingt wie ein guter Ansatz.

Wie für das DHCP-Problem: Wenn der andere Computer im gleichen Subnetz ist, können Sie es nach MAC-Adresse mit Net::ARP suchen.

3

Wie wäre es mit dem Hinzufügen eines Skripts zum Remote-Rechner, der beim Start ausgeführt wird, damit er Ihnen sagt, wann er fertig ist?

9

Auf dem Neustart Maschine können Sie ein Skript in Ihrer crontab mit der speziellen @reboot Behauptung installieren (siehe man 5 crontab). Dieses Skript könnte eine Benachrichtigung an die andere Maschine senden und sie darüber informieren, dass sie jetzt aktiv ist.

+0

Ich mag diese Idee des Systems nach Hause telefonieren.Machen Sie das letzte in der Boot-Sequenz (oder zumindest nach den Diensten, die Ihnen wichtig sind) und Sie wissen, dass das System auf Ihre nachfolgenden Anfragen reagieren kann. – tvanfosson