PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fern-Shutdown



Seiten : [1] 2

ldi91
16.04.06, 09:27
Ich würde gerne über das Netz einen Linux-server herunterfahren. aber das ganze muss eine Befehlszeile ergeben, denn das "Script" wird von einem Cgi-script aufgerufen. ein shutdown mit Wget (sowas:wget http://server2/cgi-bin/shutdown.pl) geht nicht, denn beide sind Webserver die nach außen ereichbar sind. Und ich hab keine lust jede 2. min. in Keller zu rennen und den Server wieder zu booten. Gibt es da eine Lösong mit ssh??. Ich habe Suse 10

bla!zilla
16.04.06, 10:16
Warum rennst du alle zwei Minuten in den Keller um die Kiste neu zu starten.

Du kannst dich sicherlich via SSH einloggen und die Maschine durchstarten. Alternativ kannst du dir ein CGI Skript basteln, wobei da ein Problem mit den Rechten bestehen dürfte: Ich rate nämlich dringend davon ab den Apache mit Root-Rechten laufen zu lassen. Webmin würde mir auch einfallen - aber das wäre oversized.

tschloss
16.04.06, 10:23
Ganz normal per SSH. Dem SSH kannst du auch gleich einen Befehl mitgeben. Mit einem Client-Zertifikat kannst du dir auch einen Teil der Authentifizierungsprozedur sparen, also auch für einen "once very 2 minutes" - Takt geeignet (warum auch immer).

Greetz
Thomas

Fly
16.04.06, 10:38
Ich hab einfach eine Datei unter /etc/xinetd.d/halt mit dem Inhalt erstellt:


service halt
{
port = 190
socket_type = stream
protocol = tcp
user = root
server = /sbin/halt
type = UNLISTED
wait = no
}


So kann meine Lebensgefährtin per Telnet das System niederfahren, der als Internetrouter dient...

bla!zilla
16.04.06, 10:48
Quasi ein "telnet server 190" und die Kiste fährt runter? Nice. ;)

ldi91
16.04.06, 10:51
Warum rennst du alle zwei Minuten in den Keller um die Kiste neu zu starten.
Also das hab ich nur so gemeint, dass wenn ich ein cgi hab das jemand die kisten von außen herunterfahren muss. Ich hab ein gesichertes script, was man aber nur auf dem jetzigen Server aufrufen kann. Ich hätte gerne eine möglichkeit von einem webinterface auf server 1 dem server 2 herunterfähren kann

tschloss
16.04.06, 11:08
Also das hab ich nur so gemeint, dass wenn ich ein cgi hab das jemand die kisten von außen herunterfahren muss. Ich hab ein gesichertes script, was man aber nur auf dem jetzigen Server aufrufen kann. Ich hätte gerne eine möglichkeit von einem webinterface auf server 1 dem server 2 herunterfähren kann
Ist dir jetzt geholfen oder wie?

Greetz
Thomas

ldi91
16.04.06, 11:11
nein ich brauch irgend ein script das man mit
system("script.sh");
aufruft welches sich dan auf irgendeine Art u. Weise auf server 2 einlogt und ein shutdown auslöst.

ThorstenHirsch
16.04.06, 11:19
...und dafür hast Du 2 Vorschläge bekommen.

ldi91
16.04.06, 11:29
Ich weis leider, weil ich noch kein linux profi bin, nicht, wie man dieses Script eiarbeitet.
service halt
{
port = 190
socket_type = stream
protocol = tcp
user = root
server = /sbin/halt
type = UNLISTED
wait = no
}
Das ist aber ungesichert über Telnet??
http://lusoft.dyndns.info/img/blank.gif

tschloss
16.04.06, 11:44
Warum kannst du es nicht vom Client aus machen? Du kannst dir dazu sogar ein Icon auf den Desktop legen, welches den Server 1 runterfährt.

Wenn der Web-Server das darf, dann bleibt da ein ungutes Gefühl - welches du ja selbst in Post #1 auch geäußert hast.

Greetz
Thomas

ldi91
16.04.06, 11:50
Ich hab mir eine Abmin-webinterface gebastelt, von dem man jeden server herunterfahren kann. dieses admincenter ist durch ein selbstgebautes loginsystem geschützt (das admincenter ist auf server 1) soll aber server 2 shutdown

tschloss
16.04.06, 12:05
Hmm. Sowas wurde auch schon öfter hier diskutiert!!
Ich glaube, ich würde würde das per ssh mit Client-Zertifikat machen (ohne Passphrase). Aber das heisst: Server 1 gekapert => Server 2 auch weg....
Besser würde man noch die Passphrase über das Webinterface abfragen.

Greetz
Thomas

Shutdown
16.04.06, 12:10
Ich weis leider, weil ich noch kein linux profi bin, nicht, wie man dieses Script eiarbeitet.
service halt
{
port = 190
socket_type = stream
protocol = tcp
user = root
server = /sbin/halt
type = UNLISTED
wait = no
}
Das ist aber ungesichert über Telnet??
http://lusoft.dyndns.info/img/blank.gif

Ich glaube, dass er genau wie ich nicht weiss, wie man dieses komische Script auf dem Server zum Laufen bekommen soll...offenbar handelt es sich um ein Script für xinetd, das in Slackware aber scheinbar nicht mit drin ist (wenn es bei Slackware nich mit drin is, kann es nich soo gut sein :p ) - ich habe "nur" inetd.
Funktioniert das Script auch mit inetd und wie muss ich es von (x)inetd denn starten lassen?

Shutdown

ldi91
16.04.06, 12:12
Hmm. Sowas wurde auch schon öfter hier diskutiert!!
Ich glaube, ich würde würde das per ssh mit Client-Zertifikat machen (ohne Passphrase). Aber das heisst: Server 1 gekapert => Server 2 auch weg....
Besser würde man noch die Passphrase über das Webinterface abfragen.

Greetz
Thomas

ja ich hab auch sowas im Kopf weis aber nicht wie das geht. Und wenn Server 1 gekapert ist gehen die anderen auch nicht den der 1. server stellt die Platform da. auf Server 2 sind nur Stachie daten wie Bilder Texte. Die Server sind übrigens unter http://lusoft.dyndns.info zu ereichen.

MiGo
16.04.06, 21:56
Das ist aber ungesichert über Telnet??
Jein. Telnet wird nur verwendet, um eine Verbindungsanfrage an Port 190 zu senden. Das ginge auch anderen Programmen.
Der (x)indetd merkt, dass eine Anfrage fuer eine von ihm ueberwachten Port kommt, und startet das mit dem Port assoziierte Programm.

Das ist in diesem Falle "/sbin/halt", und das macht halt keinen Server auf, sondern faehrt den Rechner runter.

ldi91
17.04.06, 10:40
Wie muss ich den xinit einbingen?
Wie sende ich den Befehl?

tschloss
17.04.06, 11:15
Wie muss ich den xinit einbingen?
Wie sende ich den Befehl?
Das stand doch in dem Post mit dem Vorschlag. Die Konfig des xinetd wohl.

Greetz
Thomas

ldi91
17.04.06, 12:47
Ich hab noch nie mit xinit gearbeitet außer ein paar kleinigkeiten. Wo ist die conf und was ist sbin/halt

tschloss
17.04.06, 13:09
Ich hab noch nie mit xinit gearbeitet außer ein paar kleinigkeiten. Wo ist die conf und was ist sbin/halt

Sorry, aber ich kapiere deine Antwort oben überhaupt nicht. xinit?

Der Post

http://www.linuxforen.de/forums/showpost.php?p=1345839&postcount=4

besteht aus 2 Zeilen und einer Textdatei.
Was gibt es daran nicht zu verstehen? Oder hast du es versucht und bist auf ein Problem "Hier ist meine genaue Problembeschreibung gestossen:...." gestoßen?

Greetz
Thomas

Atair
17.04.06, 13:21
Jein. Telnet wird nur verwendet, um eine Verbindungsanfrage an Port 190 zu senden. Das ginge auch anderen Programmen.
Der (x)indetd merkt, dass eine Anfrage fuer eine von ihm ueberwachten Port kommt, und startet das mit dem Port assoziierte Programm.

Das ist in diesem Falle "/sbin/halt", und das macht halt keinen Server auf, sondern faehrt den Rechner runter. dH er kann, wenn er die kleine definition in den xinitd einträgt( http://www.linuxforen.de/forums/showpost.php?p=1345839&postcount=4 ), mit php per fsockopen() denn server2 herunterfahren``? sehr genial, sowas bastel ich mir auch, danke :)! :D

ldi91
17.04.06, 13:51
also ich hab den dienst halt erstellt und der läuft auch. Firewall hab ich aus gemacht (man weis ja nie was die alles blockt). dann hab ich unter windows versuch telnet zum port 190 aufzubauen geht aber nicht

Microsoft Telnet> o 192.168.123.105:190
Verbindungsaufbau zu 192.168.123.105:190...Es konnte keine Verbindung mit dem Ho
st hergestellt werden, auf Port 23: Verbinden fehlgeschlagen

da steht auf port 23. wieso nicht wie angegeben port 190??

tschloss
17.04.06, 14:12
also ich hab den dienst halt erstellt und der läuft auch. Firewall hab ich aus gemacht (man weis ja nie was die alles blockt). dann hab ich unter windows versuch telnet zum port 190 aufzubauen geht aber nicht

Microsoft Telnet> o 192.168.123.105:190
Verbindungsaufbau zu 192.168.123.105:190...Es konnte keine Verbindung mit dem Ho
st hergestellt werden, auf Port 23: Verbinden fehlgeschlagen

da steht auf port 23. wieso nicht wie angegeben port 190??
Vermutlich muss man dem WIndoiws Telnet den Port irgendwie ander beibringen? Schon mal auf der Commandline versucht "telnet IP:port" oder "telnet -?" oder mit "-p"?

Greetz
Thomas

ldi91
17.04.06, 14:13
ich hab jetzt auf port 190 aufgebaut. das ging nicht.
bin in runleveleditor hab geguckt ob xinit läuft. xinit lief nicht. ich wollte den diest starten. folgende Fehlermeldung


web05:~ # /etc/init.d/xinetd start
Starting INET services. (xinetd) failed

ldi91
17.04.06, 14:20
yast sagt aber


YaST @ web05 Mit F1 kommen Sie zur Hilfe

┌────────────────────┐ Konfiguration der Netzwerkdienste (xinetd)
│ Konfiguration der ┬
│Netzwerkdienste │ ( ) Deaktivieren
│Klicken Sie auf │ (x) Aktivieren
│Aktivieren zum │
│Aktivieren von ┴ Aktuell verfügbare Dienste
│Netzwerkdiensten, │ ┌───────────────────────────────────────────────── ──┐
│die von einer │ │Geändert│Status│Dienst │Typ │Protokoll│Warten││
│Superserver-Konfigur│ │ │ NI │finger │stream│ tcp │no ││
│ation verwaltet │ │ │ NI │ftp │stream│ tcp │no │─
│werden. Zum Stoppen │ │ │ NI │ftp │stream│ tcp │no ││
│des Superservers │ │ │ An │halt │stream│ tcp │no ││
│klicken Sie auf │ │ │ NI │http-rman │stream│ tcp │no ││
│Deaktivieren. │ │ │ NI │ident │stream│ tcp │no ││
│ │ │ │ NI │imap │stream│ tcp │no ││
│ Status von │ │ │ NI │imaps │stream│ tcp │no ││
│Konfigurationsdienst│ └├──────────────┤───────────────────────────────── ──┘
│en: │ [Hinzufü][Bearbeit][Lösch][Status wechseln ('An' ode]
│Dienste, die in der │ [Status für alle Dienstev]
│Spalte Geändert mit │
└────────────────────┘ [Abbrechen] [Beenden]

ldi91
17.04.06, 14:23
Fragt mich nicht wie, aber er startet den dienst (was leider nicht heißt das ich mit telnet drauf käm)


web05:~ # /etc/init.d/xinetd start
Starting INET services. (xinetd) done
web05:~ #

tschloss
17.04.06, 14:24
ich hab jetzt auf port 190 aufgebaut. das ging nicht.
bin in runleveleditor hab geguckt ob xinit läuft. xinit lief nicht. ich wollte den diest starten. folgende Fehlermeldung


web05:~ # /etc/init.d/xinetd start
Starting INET services. (xinetd) failed



Sonst hat er nix gesagt? Warum hast du ihn nicht direkt im Runleveleditor (dauerhaft) aktiviert? Würde ich mal machen und dann nochmal durchstarten.

Ein Blick in die Logdateien hilft manchmal auch ;-) (/var/log/messages)

Thomas

bla!zilla
17.04.06, 14:25
Vermutlich muss man dem WIndoiws Telnet den Port irgendwie ander beibringen? Schon mal auf der Commandline versucht "telnet IP:port" oder "telnet -?" oder mit "-p"?


Einfach den Doppelpunkt weglassen. telnet host port.

huehnerbusch
17.04.06, 14:31
Hallo zusammen,
ich fahre einen Fileserver (der hat keinen Monitor und keine Tastatur...) wie folgt runter:
- Shell öffnen
- eingeben: "ssh server.buero" (so heißt der Rechner im Netz)
- eingeben: "halt"
Damit fährt der Server runter. Wenn das nicht geht, versuche es als root, es wird dann an unterschiedlichen Usern/Rechten auf den beiden Rechnern liegen
Zu SSH stand in der letzten Linux-User ein Bericht. Kann ich gerne scannen und zuschicken.

Viele Grüße,
Heiko

ldi91
17.04.06, 14:36
- Shell öffnen
- eingeben: "ssh server.buero" (so heißt der Rechner im Netz)
- eingeben: "halt"
Ich brach was was sich mit einer einzigsten Zeile aufrufen lässt, weil das ganze im hintergrund über perl ausgeführt wird