[Gelöst]Raspbian Autostart: Anwendung als Root ausführen

Für sonstige Unterhaltungen, welche nicht direkt mit Lazarus zu tun haben

[Gelöst]Raspbian Autostart: Anwendung als Root ausführen

Beitragvon Thandor » 9. Jan 2017, 13:53 [Gelöst]Raspbian Autostart: Anwendung als Root ausführen

Hallo,

ich versuche schon seit einiger Zeit eine, in Lazarus geschriebene, grafische Anwendung automatisch mit Root-Rechte zu starten.

Das ganze läuft auf einem RaspberryPi mit Touchscreen und soll später stand alone, also ohne Netzwerk, Internet laufen. Da der RaspPi keine Uhr hat, die auch im abgeschalteten Zustand läuft, soll das auszuführende Programm beim Programmstart die Systemzeit setzen (über eine Eingabemaske wir Zeit und Datum vom Benutzer abgefragt). Dazu sind ja Root-Rechte von Nöten.

so versuche ich zur Zeit die Systemzeit zu setzen:
Code: Alles auswählen
 
DateTimeToSystemTime(DateTime, SystemTime);
  with SystemTime do begin
    SetTime(Hour, Minute, Second, Millisecond);
    SetDate(Year, Month, Day);
  end;     
 


und so schaut zur Zeit meine .desktop-Datei aus (/home/pi/.config/autostart/kasse.desktop)
Code: Alles auswählen
 
[Desktop Entry]
Name="Kasse"
Comment="simple Cashdesk"
Type=Application
Path=/home/pi/Projekte/Kasse/
Exec=/home/pi/Projekte/Kasse/Registrierkasse
#Terminal=false
 


Also wie kann ich das Programm automatisch als Root starten lassen?
Zuletzt geändert von Thandor am 9. Jan 2017, 21:46, insgesamt 1-mal geändert.
Thandor
 
Beiträge: 104
Registriert: 30. Jan 2010, 18:17
Wohnort: Berlin
OS, Lazarus, FPC: Windows 10 64Bit/ lazarus 1.6 mit FPC 3.0.0 (32Bit) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Mathias » 9. Jan 2017, 17:57 Re: Raspbian Autostart: Anwendung als Root ausführen

Da der RaspPi keine Uhr hat, die auch im abgeschalteten Zustand läuft,

Wieso nicht so etwas nehmen ?

http://www.raspberry-pi-geek.de/Magazin ... eitangaben
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 3394
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Thandor » 9. Jan 2017, 19:22 Re: Raspbian Autostart: Anwendung als Root ausführen

Also zunächst bin ich ja nicht der Projectowner.
Eine Vernünftige Quelle für dieses Bauteil habe ich leider auch noch nicht gefunden. Entweder zahlt man mal eben den Produktpreis als Versandkosten drauf, oder es kommt aus China, wo man nie weiß wann und ob es ankommt. Sorry von "China-Bestellungen" habe ich momentan die Nase voll.

Wenn es gut läuft wird die Maschine nur einmal im Jahr neu gestartet. Also selten, da ist die manuelle Eingabe der Zeit verkraftbar.
Thandor
 
Beiträge: 104
Registriert: 30. Jan 2010, 18:17
Wohnort: Berlin
OS, Lazarus, FPC: Windows 10 64Bit/ lazarus 1.6 mit FPC 3.0.0 (32Bit) | 
CPU-Target: 64Bit
Nach oben

Beitragvon creed steiger » 9. Jan 2017, 19:27 Re: Raspbian Autostart: Anwendung als Root ausführen

Systemzeit vom Benutzer setzten zu lassen ist aus verschiedenen Gründen keine gute Idee.
z.B. Backup, austauschen von Dateien nach der Timestamp, Logfiles, ... etc.

Davon abgesehen würde dann das ganze Programm als Root laufen, was auch nicht sauber ist.

Wenn es unbedingt sein muß mach einen extra "Zeitsetzer" der mit sudo aufgerufen wird und die Zeit setzt und dann dein Programm aufruft.
creed steiger
 
Beiträge: 937
Registriert: 11. Sep 2006, 21:56

Beitragvon Thandor » 9. Jan 2017, 19:33 Re: Raspbian Autostart: Anwendung als Root ausführen

creed steiger hat geschrieben:[...]
Wenn es unbedingt sein muß mach einen extra "Zeitsetzer" der mit sudo aufgerufen wird und die Zeit setzt und dann dein Programm aufruft.


Dann habe ich aber immer noch das selbe Problem nur eben nicht mit der Hauptanwendung sondern dann mit dem Zeitsetzer.
Thandor
 
Beiträge: 104
Registriert: 30. Jan 2010, 18:17
Wohnort: Berlin
OS, Lazarus, FPC: Windows 10 64Bit/ lazarus 1.6 mit FPC 3.0.0 (32Bit) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Socke » 9. Jan 2017, 19:47 Re: Raspbian Autostart: Anwendung als Root ausführen

Thandor hat geschrieben:
creed steiger hat geschrieben:[...]
Wenn es unbedingt sein muß mach einen extra "Zeitsetzer" der mit sudo aufgerufen wird und die Zeit setzt und dann dein Programm aufruft.


Dann habe ich aber immer noch das selbe Problem nur eben nicht mit der Hauptanwendung sondern dann mit dem Zeitsetzer.

Du könntest doch sudo damit beauftragen, den Zeitsetzer zu starten?
Wenn du schon externe Programme startest, kannst du auch das Linux-Tool date verwenden; dann musst du nicht einmal den Zeitsetzer programmieren.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Socke
 
Beiträge: 2408
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 8.1/Debian GNU/Linux/Raspbian | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon creed steiger » 9. Jan 2017, 19:49 Re: Raspbian Autostart: Anwendung als Root ausführen

Thandor hat geschrieben:
creed steiger hat geschrieben:[...]
Wenn es unbedingt sein muß mach einen extra "Zeitsetzer" der mit sudo aufgerufen wird und die Zeit setzt und dann dein Programm aufruft.


Dann habe ich aber immer noch das selbe Problem nur eben nicht mit der Hauptanwendung sondern dann mit dem Zeitsetzer.



was sudo bewirkt weißt du nicht oder hast du das überlesen?

man sudo

https://linux.die.net/man/8/sudo
https://de.wikipedia.org/wiki/Sudo
creed steiger
 
Beiträge: 937
Registriert: 11. Sep 2006, 21:56

Beitragvon Thandor » 9. Jan 2017, 20:07 Re: Raspbian Autostart: Anwendung als Root ausführen

Ich weiß was Sudo bewirkt, mein Problem ist ich bekomme das nicht in den Autostart. Das Programm soll ja automatisch starten mit sudo.

Code: Alles auswählen
 
    [Desktop Entry]
    Name="Kasse"
    Comment="simple Cashdesk"
    Type=Application
    Path=/home/pi/Projekte/Kasse/
    Exec=/home/pi/Projekte/Kasse/Registrierkasse
    #Terminal=false
 

 
wenn ich jetzt statt
Code: Alles auswählen
Exec=/home/pi/Projekte/Kasse/Registrierkasse
Code: Alles auswählen
Exec="sudo /home/pi/Projekte/Kasse/Registrierkasse"
schreibe startet das Programm nicht.
Thandor
 
Beiträge: 104
Registriert: 30. Jan 2010, 18:17
Wohnort: Berlin
OS, Lazarus, FPC: Windows 10 64Bit/ lazarus 1.6 mit FPC 3.0.0 (32Bit) | 
CPU-Target: 64Bit
Nach oben

Beitragvon creed steiger » 9. Jan 2017, 20:38 Re: Raspbian Autostart: Anwendung als Root ausführen

was machen die Anführungszeichen da, ist das Dekoration?
creed steiger
 
Beiträge: 937
Registriert: 11. Sep 2006, 21:56

Beitragvon Socke » 9. Jan 2017, 21:09 Re: Raspbian Autostart: Anwendung als Root ausführen

Thandor hat geschrieben:wenn ich jetzt statt
Code: Alles auswählen
Exec=/home/pi/Projekte/Kasse/Registrierkasse
Code: Alles auswählen
Exec="sudo /home/pi/Projekte/Kasse/Registrierkasse"
schreibe startet das Programm nicht.

sudo ist nicht für grafische Anwendungen geeignet. Einen Zeitsetzer (date) kann man hingegen problemlos per sudo starten.
Verwende gksudo oder kdesudo.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Socke
 
Beiträge: 2408
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 8.1/Debian GNU/Linux/Raspbian | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon Thandor » 9. Jan 2017, 21:13 Re: Raspbian Autostart: Anwendung als Root ausführen

creed steiger hat geschrieben:was machen die Anführungszeichen da, ist das Dekoration?


Ich habe es mit und ohne probiert, beides das gleiche. Und bitte lass doch dieses "von oben herab" Geschreibsel.

Socke hat geschrieben:Du könntest doch sudo damit beauftragen, den Zeitsetzer zu starten?
Wenn du schon externe Programme startest, kannst du auch das Linux-Tool date verwenden; dann musst du nicht einmal den Zeitsetzer programmieren.


Danke Socke,

dieser Tipp war der richtige, ich habe das jetzt so gelöst:

Code: Alles auswählen
 
  {$IFDEF UNIX}
    cmd := 'sudo date -s "' + FormatDateTime('mmm dd, yyyy hh:nn:ss', DateTime) + '"';
    if not RunCommand(cmd, CmdResponse) then begin
      ShowMessage(CmdResponse);
    end;
  {$ELSE}
    ...
 


jedoch sagt mir Lazarus dass RunCommand deprecated ist? Gibt es da einen Ersatz?
Thandor
 
Beiträge: 104
Registriert: 30. Jan 2010, 18:17
Wohnort: Berlin
OS, Lazarus, FPC: Windows 10 64Bit/ lazarus 1.6 mit FPC 3.0.0 (32Bit) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Socke » 9. Jan 2017, 21:22 Re: Raspbian Autostart: Anwendung als Root ausführen

Thandor hat geschrieben:jedoch sagt mir Lazarus dass RunCommand deprecated ist? Gibt es da einen Ersatz?

Es sind nur die Versionen von RunCommand deprecated, in denen eine ganze Befehlszeile angegeben ist. Wird das Programm und die Parameter getrennt angegeben, gibt es weniger Probleme (besonders in komplexen Situationen).

Versuch mal:
Code: Alles auswählen
var outstr: String;
begin
  if RunCommand('sudo', ['date', '-s', FormatDateTime('mmm dd, yyyy hh:nn:ss', DateTime)], outstr, [poWaitOnExit]) then
  // ...
end;
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Socke
 
Beiträge: 2408
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 8.1/Debian GNU/Linux/Raspbian | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon creed steiger » 9. Jan 2017, 21:42 Re: Raspbian Autostart: Anwendung als Root ausführen

Socke hat geschrieben:
Thandor hat geschrieben:wenn ich jetzt statt
Code: Alles auswählen
Exec=/home/pi/Projekte/Kasse/Registrierkasse
Code: Alles auswählen
Exec="sudo /home/pi/Projekte/Kasse/Registrierkasse"
schreibe startet das Programm nicht.

sudo ist nicht für grafische Anwendungen geeignet. Einen Zeitsetzer (date) kann man hingegen problemlos per sudo starten.
Verwende gksudo oder kdesudo.



seltsam, das wäre mir neu.
sudo funktioniert für graphische Anwendungen doch ohne Probleme.
Ich habs grad auf meine Pi probiert, funzt ohne Probleme.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von creed steiger am 9. Jan 2017, 21:47, insgesamt 1-mal geändert.
creed steiger
 
Beiträge: 937
Registriert: 11. Sep 2006, 21:56

Beitragvon Thandor » 9. Jan 2017, 21:43 Re: Raspbian Autostart: Anwendung als Root ausführen

@Socke
Ja, das Funktioniert.
Jedoch musste ich "[poWaitOnExit]" wegnehmen, da RunCommand nur 3 Parameter akzeptiert.
Thandor
 
Beiträge: 104
Registriert: 30. Jan 2010, 18:17
Wohnort: Berlin
OS, Lazarus, FPC: Windows 10 64Bit/ lazarus 1.6 mit FPC 3.0.0 (32Bit) | 
CPU-Target: 64Bit
Nach oben

• Themenende •

Zurück zu Dies und Das



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron
porpoises-institution
accuracy-worried