Skript und sudo [gelöst]

Antworten
Adrian
Beiträge: 27
Registriert: Mo 12. Nov 2007, 12:41
OS, Lazarus, FPC: Winux (L 1.6 FPC 3.0.0)
CPU-Target: 32Bit

Skript und sudo [gelöst]

Beitrag von Adrian »

Servus!

Ich arbeite an einem Programm, das unter anderem mittels youtube-dl (aktuelle Version 2020.05.08) Videos aus dem Internet zur weiteren Verarbeitung herunterladen soll.
Dazu erstelle ich ein Script namens Umsetzer.sh, das via TProcess ausgeführt wird.
Der Programmcode hierzu sieht folgendermaßen aus:

Code: Alles auswählen

  AssignFile(Datei, 'Umsetzer.sh');
  Rewrite(Datei);
  AktionsMemo.Lines.SaveToFile('Umsetzer.sh');
  CloseFile(Datei);
  fpChmod ('Umsetzer.sh',&777);
  AProcess := TProcess.Create(nil);
  AProcess.Executable:= 'Umsetzer.sh';
  AProcess.Options := AProcess.Options + [poWaitOnExit];
  AProcess.Execute;
  AProcess.Free;
 
Der Inhalt von Umsetzer.sh ist so aufgebaut:

Code: Alles auswählen

#!/bin/bash
sudo youtube-dl --format mp4 {url von Video1}
sudo youtube-dl --format mp4 {url von Video2}
{ usw... }
Wie ich herausgefunden habe, muß ich youtube-dl mit sudo aufrufen, andernfalls erhalte ich eine Fehlermeldung

Code: Alles auswählen

  File "/home/xxx/.local/bin/youtube-dl", line 7
    from youtube-dl import main
                ^
SyntaxError: invalid syntax
Die Ausführung von Umsetzer.sh im Terminal wäre problemlos, es wird einmal nach dem Passwort gefragt, und dann beginnen die Downloads.
Mit dem Programm hingegen habe ich keinen Erfolg. Das Skript wird zwar gestartet, aber es wird kein Terminalfenster geöffnet, und so ist es mir nicht möglich, das Passwort einzugeben. Das Programm erwartet dies aber und so geht nichts weiter.

Was kann ich denn machen, daß ich das Terminalfenster sehe?
Dann könnte ich einerseits das Passwort eingehen, andererseits sähe ich auch den Fortschritt der Downloads.
Oder zumindest was wäre zu tun, daß ich das Passwort eingeben kann?
Da das Programm auf verschiedenen Rechnern laufen soll, sind Lösungen, die den Eingriff in Konfigurationsdateien notwendig machen, leider keine Option.

Zum System: Ich arbeite mit Lubuntu 18.04, Lazarus 1.6 und fpc 3.0.0

Gruß
Adrian
Zuletzt geändert von Adrian am So 17. Mai 2020, 04:56, insgesamt 1-mal geändert.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 4306
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: Skript und sudo

Beitrag von af0815 »

Vorweg, TProzess ist keine Shell. Deswegen gehen manche Tricks, die das Passwort per Pipe im Script selbst eingeben nicht.

Das wegen der Passworteingabe ist meines Wissens vor einiger Zeit im englischen Forum diskutiert worden.

Besser wäre es, das youtube-dl ohne root laufen zu lassen. Welche Rechte fehlen, damit das als Benutzer ausgeführt werden kann ? Ev. mal bezüglich setcap die file capabilities prüfen, ob man da nicht gezielt die Rechte setzen kann, damit kein root benötigt wird.

Oder du rufst eine eigene (Sub-)shell auf, in der du erst das Script ausführst. Denn dann hast du die Möglichkeiten einer richtigen Shell.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Warf
Beiträge: 1505
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: MacOS | Win 10 | Linux
CPU-Target: x86_64
Wohnort: Aachen

Re: Skript und sudo

Beitrag von Warf »

Das script sollte auf keinen Fall root rechte benötigen.


Da du dann einen syntax fehler bekommst würde ich schätzen das ist ein python versions problem

mtbf40
Beiträge: 69
Registriert: Do 3. Nov 2011, 16:39

Re: Skript und sudo

Beitrag von mtbf40 »

Hallo,

schau mal hier - die englische Version
https://wiki.freepascal.org/Executing_External_Programs

Adrian
Beiträge: 27
Registriert: Mo 12. Nov 2007, 12:41
OS, Lazarus, FPC: Winux (L 1.6 FPC 3.0.0)
CPU-Target: 32Bit

Re: Skript und sudo

Beitrag von Adrian »

Servus!

Vielen Dank an warf, er hat recht.
Das sudo-Problem tritt nur bei meinem kleinen Atom-Netbook auf, der Desktop-Rechner verlangt keine root-Rechte.
Jetzt muß ich nur noch herausfinden, was die genau Ursache ist, und wie sie zu beheben ist. Aber das ursprüngliche Problem ist - siehe auch der Link auf die englischsprachige Lösung - behoben.

Gruß
Adrian

Warf
Beiträge: 1505
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: MacOS | Win 10 | Linux
CPU-Target: x86_64
Wohnort: Aachen

Re: Skript und sudo [gelöst]

Beitrag von Warf »

Was ist denn der shebanf von dem youtube-dl script (die erste zeile die mit #! Anfängt)

Antworten