Remote shutdown unter Linux?
-
- Interessierter
- Beiträge: 28
- Registriert: Sonntag 23. Januar 2005, 18:54
Remote shutdown unter Linux?
Hallo Mädels ,
ich habe schon seit langer Zeit eine DBox mit Yadi Image und bin hellauf begeistert. Auch das Aufnahmen auf meinem Linux Server per "mono udrec.exe" funktioniert 1A. Auch WOL von der Dbox aus, so dass mein Server immer automatisch eingeschalten wird funktioniert erste Sahne.
Auf meinem linux Server hab ich es so eingerichtet dass udrex automatisch beim booten startet. Funktioniert, wie nicht anders zu erwarten , auch 1A
Von dem her bin ich eigentlich fast schon wunschlos glücklich. Nur eine Sache hätt ich noch gern: dass mein Linux Server automatisch runter gefahren wird wenn die Aufnahme fertig ist. Soweit ich das hier raus lesen konnte gibts von JTG ein Tool das dies vollautomatisch macht. Voraussetzung: Windows. Kennt jemand einen Trick wie ich auch das unter Linux bewerkstelligen könnte? Ich selbst denke dass es da extrem schlecht aussieht weil man ja den shutdown expliziet nur als root ausführen kann und man somit immer zuerst das root Kennwort eingeben muß bevor da was geht.
Aber vielleicht kennt einer von euch ja doch nen Trick oder Kniff das irgendwie zu bewerkstillgen.
Danke schon mal für eine Antwort.
ich habe schon seit langer Zeit eine DBox mit Yadi Image und bin hellauf begeistert. Auch das Aufnahmen auf meinem Linux Server per "mono udrec.exe" funktioniert 1A. Auch WOL von der Dbox aus, so dass mein Server immer automatisch eingeschalten wird funktioniert erste Sahne.
Auf meinem linux Server hab ich es so eingerichtet dass udrex automatisch beim booten startet. Funktioniert, wie nicht anders zu erwarten , auch 1A
Von dem her bin ich eigentlich fast schon wunschlos glücklich. Nur eine Sache hätt ich noch gern: dass mein Linux Server automatisch runter gefahren wird wenn die Aufnahme fertig ist. Soweit ich das hier raus lesen konnte gibts von JTG ein Tool das dies vollautomatisch macht. Voraussetzung: Windows. Kennt jemand einen Trick wie ich auch das unter Linux bewerkstelligen könnte? Ich selbst denke dass es da extrem schlecht aussieht weil man ja den shutdown expliziet nur als root ausführen kann und man somit immer zuerst das root Kennwort eingeben muß bevor da was geht.
Aber vielleicht kennt einer von euch ja doch nen Trick oder Kniff das irgendwie zu bewerkstillgen.
Danke schon mal für eine Antwort.
-
- Erleuchteter
- Beiträge: 785
- Registriert: Samstag 6. August 2005, 03:39
Hi,
vieleicht geht es wenn du einen Cron Job mit root Rechten laufen lässt, der immer schaut ob eine Datei da ist oder nicht.
Wenn diese Datei da ist, löscht der cronjob die Datei und fährt den Server runter.
Die Datei kannst du dann im record.end anlegen.
Weis nicht ob das so geht, aber das war mein erster Gedanke dazu.
bye
PetB
vieleicht geht es wenn du einen Cron Job mit root Rechten laufen lässt, der immer schaut ob eine Datei da ist oder nicht.
Wenn diese Datei da ist, löscht der cronjob die Datei und fährt den Server runter.
Die Datei kannst du dann im record.end anlegen.
Weis nicht ob das so geht, aber das war mein erster Gedanke dazu.
bye
PetB
1 x DBOX2 Phillips, 1 x DBOX2 Nokia, 1 x DBOX2 Sagem, 100er Gibertini (Astra / Hotbird), NFS Server
-
- Interessierter
- Beiträge: 28
- Registriert: Sonntag 23. Januar 2005, 18:54
Hmmm... du meinst dass die Dbox bei Aufnahmeende automatisch eine Datei per NFS anlegen soll und ein Cronjob auf meinem Linux Server immer nachschaut ob diese Datei da ist. Wenn ja soll er sie löschen und danach runter fahren? hmm.. hört sich eigentlich super an find ich.
Nur wie kann ich der DBox beibringen dass sie eine Datei erstellen soll (per "touch"?)? Du schreibtest was von "record.end". Das sagt mir leider nichts. Ist das die Datei die ausgeführt wird wenn die Aufnahme stoppt?
Danke dir schon mal.
edit:
hab jetzt mal ein bischen rum gesucht und im Ordner /var/tuxbox/config eine Datei namens recording.end (rechte 755) angelegt. Hab dort drin jetzt mal nur testweise folgendne code rein geschreiben
#!/bin/sh
touch lala.sh
somit müsste bei Aufnahmenede direkt auf der Dbox lokal die Datei lala.sh angelegt werden. Dies passiert jedoch nicht. Weder über direktaufnahme (also über blaue => rote taste) als auch über zeitgesteuerte aufnahme nicht Idee warum bzw. wann die recording.end ausgeführt wird?
Nur wie kann ich der DBox beibringen dass sie eine Datei erstellen soll (per "touch"?)? Du schreibtest was von "record.end". Das sagt mir leider nichts. Ist das die Datei die ausgeführt wird wenn die Aufnahme stoppt?
Danke dir schon mal.
edit:
hab jetzt mal ein bischen rum gesucht und im Ordner /var/tuxbox/config eine Datei namens recording.end (rechte 755) angelegt. Hab dort drin jetzt mal nur testweise folgendne code rein geschreiben
#!/bin/sh
touch lala.sh
somit müsste bei Aufnahmenede direkt auf der Dbox lokal die Datei lala.sh angelegt werden. Dies passiert jedoch nicht. Weder über direktaufnahme (also über blaue => rote taste) als auch über zeitgesteuerte aufnahme nicht Idee warum bzw. wann die recording.end ausgeführt wird?
-
- Interessierter
- Beiträge: 27
- Registriert: Freitag 24. Oktober 2003, 09:08
du kannst einen dienst für inetd bsw. xinetd definieren, der auf einem bestimmten port hört
z.b. so ähnlich:
/etc/xinetd.d/dbox:
service dbox
{
port = 4711
socket_type = stream
protocol = tcp
user = root
group = root
server = /root/bin/dbox
type = UNLISTED
wait = no
only_from = 192.168.123.0/24
}
/root/bin/dbox:
#!/bin/sh
/sbin/halt
in record.end kannste dann nc ip 4711 aufrufen. dann sollte dein server runter fahren.
z.b. so ähnlich:
/etc/xinetd.d/dbox:
service dbox
{
port = 4711
socket_type = stream
protocol = tcp
user = root
group = root
server = /root/bin/dbox
type = UNLISTED
wait = no
only_from = 192.168.123.0/24
}
/root/bin/dbox:
#!/bin/sh
/sbin/halt
in record.end kannste dann nc ip 4711 aufrufen. dann sollte dein server runter fahren.
-
- Interessierter
- Beiträge: 28
- Registriert: Sonntag 23. Januar 2005, 18:54
super danke. So ginge es natürlich auch. Nur hab ich leider das Problem dass meine recording.end nicht ausgeführt wird (oder ich zu doof für die recording.end bin hihi):
Logdog82 hat geschrieben: hab jetzt mal ein bischen rum gesucht und im Ordner /var/tuxbox/config eine Datei namens recording.end (rechte 755) angelegt. Hab dort drin jetzt mal nur testweise folgendne code rein geschreiben
#!/bin/sh
touch lala.sh
somit müsste bei Aufnahmenede direkt auf der Dbox lokal die Datei lala.sh angelegt werden. Dies passiert jedoch nicht. Weder über direktaufnahme (also über blaue => rote taste) als auch über zeitgesteuerte aufnahme nicht Idee warum bzw. wann die recording.end ausgeführt wird?
-
- Interessierter
- Beiträge: 27
- Registriert: Freitag 24. Oktober 2003, 09:08
-
- Interessierter
- Beiträge: 28
- Registriert: Sonntag 23. Januar 2005, 18:54
-
- Erleuchteter
- Beiträge: 785
- Registriert: Samstag 6. August 2005, 03:39
Die andere Lösung geht halt ohne Zeitversatz und ohne Umweg über eine Datei.Logdog82 hat geschrieben:
cool danke das wars. Hab ich glatt vergessen ich Esel dass man ja schreibrechte braucht.
Cool merci. Den Rest mach ich dann morgen (entweder die Cronjob/NFS Lösung oder deine. Muß ich schaun).
Danke euch. Wart mir echt eine Hilfe.
Sieht eleganter aus als meine
Wenn das bei dir klappt, poste doch bitte genau wie du und wo du was angelegt hast.
Das interessiert mich, danke.
Ich muss demnächst von meinem NT Server aus 2 Linux Rechner runterfahren, das die USV Steuerung auf dem NT Server läuft.
Da würde mir das auch zu Hilfe kommen.
Bye
PetB
1 x DBOX2 Phillips, 1 x DBOX2 Nokia, 1 x DBOX2 Sagem, 100er Gibertini (Astra / Hotbird), NFS Server
-
- Interessierter
- Beiträge: 28
- Registriert: Sonntag 23. Januar 2005, 18:54
Also hab mich jetzt doch für die NFS Methode entschlossen da ich noch gern gleich da ein paar andere Sachen damit abdecken möchte.
Auf dem Server läuft nun ein funktionierender Cronjob der sauber schaut ob eine Datei namens "halt" existiert. Wenn ja wird er herunter gefahren.
Fehlt nur noch eins: die Dbox soll per NFS die Datei erstellen.
Dazu hab ich folgendes Script erstellt (recording.end)
Wenn ich dies in der konsole ausführe per ./recording.end funktioniert es und die Datei wird angelegt. Nur wenn die Aufnahme stopp wird es nicht ausgeführt. Jemand eine idee?
ach ja wenn ich statt des obigen das hier in die recording.end schreibe
funktioniert es. nur das mounten und das schreiben der file nicht. komisch
Auf dem Server läuft nun ein funktionierender Cronjob der sauber schaut ob eine Datei namens "halt" existiert. Wenn ja wird er herunter gefahren.
Fehlt nur noch eins: die Dbox soll per NFS die Datei erstellen.
Dazu hab ich folgendes Script erstellt (recording.end)
Code: Alles auswählen
#!/bin/sh
mount -t nfs barebone:/dbox_shutdown /mnt/custom -o rw,rsize=32768,wsize=8192,soft,udp,async,nolock &
touch /mnt/custom/halt
ach ja wenn ich statt des obigen das hier in die recording.end schreibe
Code: Alles auswählen
#!/bin/sh
touch /tmp/bla
-
- Erleuchteter
- Beiträge: 785
- Registriert: Samstag 6. August 2005, 03:39
Ich verwechsel das immer,
wie war das nochmal mit dem & Zeichen am Schluss ?
Wenns da ist wartet er auf das Ende, wenn nicht dann geht er gleich zum nächsten BEfehl oder... ????
Ich glaube das es so war das er wenn das & benutzt wird der Prozess in den Hintergrund geschoben wird und gleich der nächste Befehl abgesetzt wird.
Das würde dan bei dir dazu führen das der mount eventuell noch nicht fertig ist, du aber schon schreiben willst.
Jep, habe eben ein Unix Bich rausgekramt.
Da steht es ... mit & geht der Prozess in den Hintergrund und die shell kommt wieder, sprich der nächste Befehl wird abgearbeitet.
Poste doch bitte mal die Zeile deines cron jobs.
Bye
PetB
wie war das nochmal mit dem & Zeichen am Schluss ?
Wenns da ist wartet er auf das Ende, wenn nicht dann geht er gleich zum nächsten BEfehl oder... ????
Ich glaube das es so war das er wenn das & benutzt wird der Prozess in den Hintergrund geschoben wird und gleich der nächste Befehl abgesetzt wird.
Das würde dan bei dir dazu führen das der mount eventuell noch nicht fertig ist, du aber schon schreiben willst.
Jep, habe eben ein Unix Bich rausgekramt.
Da steht es ... mit & geht der Prozess in den Hintergrund und die shell kommt wieder, sprich der nächste Befehl wird abgearbeitet.
Poste doch bitte mal die Zeile deines cron jobs.
Bye
PetB
1 x DBOX2 Phillips, 1 x DBOX2 Nokia, 1 x DBOX2 Sagem, 100er Gibertini (Astra / Hotbird), NFS Server
-
- Erleuchteter
- Beiträge: 865
- Registriert: Dienstag 12. März 2002, 21:40
Logdog82 hat geschrieben: Nur wenn die Aufnahme stopp wird es nicht ausgeführt. Jemand eine idee?
ach ja wenn ich statt des obigen das hier in die recording.end schreibefunktioniert es. nur das mounten und das schreiben der file nicht. komischCode: Alles auswählen
#!/bin/sh touch /tmp/bla
Wieso willst Du denn nochmal extra mounten? Da Du beim Aufnehmen bist hat er doch schon gemountet?
Vermutlich funktioniert deshalb Dein erstes Skript auch nicht, das wiederholen des Mountens schlägt fehl und zieht den Rest des Befehls mit in den Fehlerausgang.
Lass das Mounten im ersten Beispiel mal weg und mach nur den touch auf dem Pfad.
Gruß
Frockert
---------------------------
2.6.11-kanotix-3 KDE 3.3.2
http://www.frockert.de
http://www.eifel-forum.de
2.6.11-kanotix-3 KDE 3.3.2
http://www.frockert.de
http://www.eifel-forum.de
-
- Interessierter
- Beiträge: 28
- Registriert: Sonntag 23. Januar 2005, 18:54
Ja genau das & Zeichen hab ich gemacht weil wenn ich in der Konsole per Telnet den oben genannten Mount Befehl absetze blinkt nur noch der Cursor in der Konsole und mehr passiert nicht. Das Verzeichnis ist zwar gemountet (das weiß ich weil wenn ich eine zweite Telnet Session aufmache kann ich in den gemounteten Ordner rein) aber der Cursor springt nicht weiter. Es passiert dann einfach nichts mehr. Deshalb das & dass es in den Hintergrund geschoben wird.petb hat geschrieben:Ich verwechsel das immer,
wie war das nochmal mit dem & Zeichen am Schluss ?
Das der nächste Befehl zu schnell kommt könnte natürlich evtl. sein. Dazu müsst ich einfach ein "sleep 1000" rein setzten damit er eine Sekunde wartet oder? Wobei das eigentlich auch nicht sein kann weil ich mal versuchsweise davor schon gemountet hab und es trotzdem nicht ging. Wie gesagt ich kann das Script auch per telnet manuell ausführen mittels "./recording.end". Dann gehts ja auch. Er machts nur nicht automatisch wenn die Aufnahme beendet wird. Echt komisch
Warum? Nur so interessehalber was hat der cronjob von meinem Aufnahmeserver damit zu tun?petb hat geschrieben:Poste doch bitte mal die Zeile deines cron jobs
Warum sollte ich ein Verzeichnis mounten wenn ich aufnehme?Frockert hat geschrieben:Wieso willst Du denn nochmal extra mounten? Da Du beim Aufnehmen bist hat er doch schon gemountet?
Ach du meinst wegen Direktaufnahme? Nö das mach ich nicht. Aufm Server läuft udrec. Deshalb ist da nichts gemountet. Hab damals gelesen dass udrec besser sei als NFS direktaufnahme.
Wenn man ein Verzeichnis mounten will was bereits gemountet ist passiert einfach gar nichts. Er geht einfach weiter. Nix FehlerausgangFrockert hat geschrieben:Vermutlich funktioniert deshalb Dein erstes Skript auch nicht, das wiederholen des Mountens schlägt fehl und zieht den Rest des Befehls mit in den Fehlerausgang
PS: gibts nicht auch nen IRC Chat wo man darüber reden kann am Abend mal oder so?
-
- Einsteiger
- Beiträge: 198
- Registriert: Sonntag 15. Februar 2004, 20:33
-
- Erleuchteter
- Beiträge: 785
- Registriert: Samstag 6. August 2005, 03:39
Hi,
ich wollte deinen cronjob sehen um es mir leichter zu machen.
Sprich: ich wollte dein geistiges Eigentum klauen
Ich weis nicht mehr genau wie der aufbau war und ob ich da root mit angeben muss oder....... wollte eben wissen wie es genau geht
Was den Mount angeht, wenn ich mounte und dann nochmal mounte, denke ich im Moment muss ich auch zweimal umount absetzen oder nicht ?
Bye
PetB
ich wollte deinen cronjob sehen um es mir leichter zu machen.
Sprich: ich wollte dein geistiges Eigentum klauen
Ich weis nicht mehr genau wie der aufbau war und ob ich da root mit angeben muss oder....... wollte eben wissen wie es genau geht
Was den Mount angeht, wenn ich mounte und dann nochmal mounte, denke ich im Moment muss ich auch zweimal umount absetzen oder nicht ?
Bye
PetB
1 x DBOX2 Phillips, 1 x DBOX2 Nokia, 1 x DBOX2 Sagem, 100er Gibertini (Astra / Hotbird), NFS Server
-
- Interessierter
- Beiträge: 28
- Registriert: Sonntag 23. Januar 2005, 18:54
Hi,
ich wollte nur bescheid geben dass jetzt alles klappt
Ich hab einfach noch die Zeile "sleep 2" eingefügt so dass er zwei Sekunden warten soll nach dem mounten. Jetzt klappt alles. Vielen dank Jungs
Hier noch mal meine recording.end:
ich wollte nur bescheid geben dass jetzt alles klappt
Ich hab einfach noch die Zeile "sleep 2" eingefügt so dass er zwei Sekunden warten soll nach dem mounten. Jetzt klappt alles. Vielen dank Jungs
Hier noch mal meine recording.end:
Hier mein Cronjob (als root) für petb#!/bin/sh
mount -t nfs rechner:/dbox_shutdown /mnt/custom -o rw,rsize=32768,wsize=8192,soft,udp,async,nolock &
sleep 2
touch /mnt/custom/halt
Und hier noch das Python Script was ich mir geschrieben habe:*/10 * * * * python /usr/local/bin/shutdown.py
Danke noch mal#!/usr/bin/python
import os
if os.path.isfile("/dbox_shutdown/halt"):
os.system("rm -rf /dbox_shutdown/halt")
os.system("/sbin/shutdown -h now")
-
- Erleuchteter
- Beiträge: 785
- Registriert: Samstag 6. August 2005, 03:39
DankeLogdog82 hat geschrieben:Hi,
ich wollte nur bescheid geben dass jetzt alles klappt
Ich hab einfach noch die Zeile "sleep 2" eingefügt so dass er zwei Sekunden warten soll nach dem mounten. Jetzt klappt alles. Vielen dank Jungs
Hier noch mal meine recording.end:Hier mein Cronjob (als root) für petb#!/bin/sh
mount -t nfs rechner:/dbox_shutdown /mnt/custom -o rw,rsize=32768,wsize=8192,soft,udp,async,nolock &
sleep 2
touch /mnt/custom/haltUnd hier noch das Python Script was ich mir geschrieben habe:*/10 * * * * python /usr/local/bin/shutdown.pyDanke noch mal#!/usr/bin/python
import os
if os.path.isfile("/dbox_shutdown/halt"):
os.system("rm -rf /dbox_shutdown/halt")
os.system("/sbin/shutdown -h now")
Was bedeutet denn der / vor der 10 ?
Kann ich das nicht auch als shellscript im cronjob aufrufen, doch oder ?!
Und der cronjob als root, muss da nicht noch root dahinter stehen ? oder wie ist das genau ?
Danke
bye
PetB
also anstelle
1 x DBOX2 Phillips, 1 x DBOX2 Nokia, 1 x DBOX2 Sagem, 100er Gibertini (Astra / Hotbird), NFS Server
-
- Interessierter
- Beiträge: 28
- Registriert: Sonntag 23. Januar 2005, 18:54
Das / vor der 10 bedeutet dass der cronjob alle 10 Minuten ausgeführt wird.
Hier mal generell für dich eine Übersicht der Spalten
Im cronjob kannst du alles eintragen. Sowohl shellscripte als auch binär Dateien. Geht alles
Zu root: nein. Du mußt nur den cronjob als root einrichten. Unter Ubuntu z.B. per "sudo crontab -e". Bei allen anderen Distributionen wo es "normale" root accounts gibt einfach per "su -" als root einloggen und dann mittels "crontab -e" den cronjob eintragen. Fertig
Hier mal generell für dich eine Übersicht der Spalten
Code: Alles auswählen
* * * * * command to be executed
- - - - -
| | | | |
| | | | +----- day of week (0 - 6) (Sunday=0)
| | | +------- month (1 - 12)
| | +--------- day of month (1 - 31)
| +----------- hour (0 - 23)
+------------- min (0 - 59)
Zu root: nein. Du mußt nur den cronjob als root einrichten. Unter Ubuntu z.B. per "sudo crontab -e". Bei allen anderen Distributionen wo es "normale" root accounts gibt einfach per "su -" als root einloggen und dann mittels "crontab -e" den cronjob eintragen. Fertig
-
- Erleuchteter
- Beiträge: 785
- Registriert: Samstag 6. August 2005, 03:39