Wie den PC herunterfahren?
-
- Beiträge: 43
- Registriert: Sa 26. Jun 2010, 17:10
Wie den PC herunterfahren?
Hallöchen,
Mit welchen Befehlen kann ich den (Ubuntu-)PC herunterfahren? Und zwar ohne Root-Rechte!
Es gibt ja zahlreiche Progrämmchen die das schaffen, dann sollte das doch auch mit Lazarus hinzubekommen sein.
Dankeschön, Meister0815
Mit welchen Befehlen kann ich den (Ubuntu-)PC herunterfahren? Und zwar ohne Root-Rechte!
Es gibt ja zahlreiche Progrämmchen die das schaffen, dann sollte das doch auch mit Lazarus hinzubekommen sein.
Dankeschön, Meister0815
Re: Wie den PC herunterfahren?
Dieses Forum verfügt über eine Suchfunktion:
http://www.lazarusforum.de/search.php?k ... bmit=Suche" onclick="window.open(this.href);return false;
http://www.lazarusforum.de/search.php?k ... bmit=Suche" onclick="window.open(this.href);return false;
-
- Beiträge: 688
- Registriert: Mi 3. Okt 2007, 21:00
- OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
- CPU-Target: x86_64
Re: Wie den PC herunterfahren?
Ganz easypeasy:
dbus-send muss installiert sein, ebenso wie ConsoleKit, welches aber auf jedem Linux-System mit Mehrbenutzerdesktop (also jedem mit GUI) zu finden ist.
Code: Alles auswählen
procedure ShutdownLinux;
var p: TProcess;
begin
if FileExists('/usr/bin/dbus-send') then
begin
p:=TProcess.Create(nil);
p.Options:=[poStderrToOutPut];
writeLn('Shutting down Linux...');
p.CommandLine:='dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop';
p.Execute;
p.Free;
//Application.Terminate; //Close application, system is shutting down
end else writeLn('DBus command line utility not found!');
end;
Re: Wie den PC herunterfahren?
das Programm muss dann aber mit su gestartet worden sein ?
edit: hier die antworte auf meine frage: http://www.lazarusforum.de/viewtopic.ph ... n&start=15" onclick="window.open(this.href);return false;
(es gibt wohl unter linux auch eine art UAC)
edit: hier die antworte auf meine frage: http://www.lazarusforum.de/viewtopic.ph ... n&start=15" onclick="window.open(this.href);return false;
(es gibt wohl unter linux auch eine art UAC)
-
- Beiträge: 688
- Registriert: Mi 3. Okt 2007, 21:00
- OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
- CPU-Target: x86_64
Re: Wie den PC herunterfahren?
Mein Code oben sendet eine Nachricht über DBus (ein Interprozesskommunikationsdienst und Object Request Broker) an einen Dienst namens "ConsoleKit", welcher eine Art Universalwerkzeug zum Session-Management ist. Über diesen kann jeder Benutzer, entsprechende Rechte vorrausgesetzt, den Rechner herunterfahren. Root-Rechte sind nicht nötig.
Der Code oben geht natürlich sauberer, wenn man die DBus-Anbindung von FPC benutzt, dann wird der Code aber viel, viel umfangreicher. (Mit FPC kann man nur elementares DBus nutzen, DBus-GLib oder QtDBus ist (noch) nicht verfügbar)
Der Code oben geht natürlich sauberer, wenn man die DBus-Anbindung von FPC benutzt, dann wird der Code aber viel, viel umfangreicher. (Mit FPC kann man nur elementares DBus nutzen, DBus-GLib oder QtDBus ist (noch) nicht verfügbar)
-
- Beiträge: 657
- Registriert: Sa 9. Jan 2010, 17:32
- OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
- CPU-Target: 64Bit
Re: Wie den PC herunterfahren?
Für solche Fälle gibt es das PolicyKit, das für bestimmte Programme für die Ausführung von bestimmten Befehlen Root-Rechte verleihen kann.
du programmierst es so, dass es root-rechte braucht und stellst dann ein, dass es diese für die Asuführung von "halt" auch bekommt.
http://linuxundich.de/en/ubuntu/shutdow ... er-jaunty/" onclick="window.open(this.href);return false;
du programmierst es so, dass es root-rechte braucht und stellst dann ein, dass es diese für die Asuführung von "halt" auch bekommt.
http://linuxundich.de/en/ubuntu/shutdow ... er-jaunty/" onclick="window.open(this.href);return false;
-
- Beiträge: 688
- Registriert: Mi 3. Okt 2007, 21:00
- OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
- CPU-Target: x86_64
Re: Wie den PC herunterfahren?
Für PolicyKit musst du dein Programm aber aufsplitten in einen Hintergrunddienst, der mit Root-Rechten läuft und ein Frontend. Dann kann das Frontend über Sockets oder besser DBus dem Backend Befehle senden. Dazwischen hängt PolicyKit und blockt den Zugriff, wenn der Nutzer keine Rechte hat. In diesem Fall halte ich PolicyKit für den absoluten overkill. Aber wenn es größere Sachen sind, die als Root ausgeführt werden müssen, würde ich diese Technik sehr empfehlen!
PolicyKit kontrolliert auch HAL, über welches man Linux ebenfalls herunterfahren kann. HAL ist aber deprecated, und ich weiß nicht, wie es mit der UDev-Unterstützung von PolicyKit aussieht. (Dann muss aber ebenfalls nur das DBus-Kommando ausgetauscht werden)
PolicyKit kontrolliert auch HAL, über welches man Linux ebenfalls herunterfahren kann. HAL ist aber deprecated, und ich weiß nicht, wie es mit der UDev-Unterstützung von PolicyKit aussieht. (Dann muss aber ebenfalls nur das DBus-Kommando ausgetauscht werden)
Re: Wie den PC herunterfahren?
Unterstützt ubuntu batch?
In der Konsole geht es glaubich per shutdown -h
In der Konsole geht es glaubich per shutdown -h
Danke schonmal für eure Antworten
it´s not a bug, it´s a feature!
it´s not a bug, it´s a feature!
-
- Beiträge: 657
- Registriert: Sa 9. Jan 2010, 17:32
- OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
- CPU-Target: 64Bit
Re: Wie den PC herunterfahren?
der genaue Befehlt lautet "shutdown -h 0" und den kann man auch als TProcess starten.
Was vielleicht machbar wäre, wäre ein Init-Script (welches dadurch automatisch Root-Rechte hat), das im Hintergrund läuft.
Auch gehen wäre, dass du den Prozess "shutdown -h 0" suspended (TProcess-Doku lesen..) startest mit root-Rechten und sobald du herunterfahren musst, kannst du den Job resumen. Dadurch verlagert sich die Passworteingabe aber nur auf den Start des Programms.
Was vielleicht machbar wäre, wäre ein Init-Script (welches dadurch automatisch Root-Rechte hat), das im Hintergrund läuft.
Auch gehen wäre, dass du den Prozess "shutdown -h 0" suspended (TProcess-Doku lesen..) startest mit root-Rechten und sobald du herunterfahren musst, kannst du den Job resumen. Dadurch verlagert sich die Passworteingabe aber nur auf den Start des Programms.