Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Ordnerüberwachung mit Incron und Weitergabe Dateiname an Skript

Alles rund um die Systemverwaltung, die Administration und Konfiguration Eures Linuxsystems

Moderator: Moderatoren

Antworten
bunter fisch
Member
Member
Beiträge: 69
Registriert: 12. Sep 2017, 10:25

Ordnerüberwachung mit Incron und Weitergabe Dateiname an Skript

Beitrag von bunter fisch » 25. Feb 2018, 12:56

Hallo,

es soll ein Ordner auf neue Dateien überwacht werden und diese soll dann umgewandelt werden. Zunächst habe ich Incron installiert und so eingerichtet:

Code: Alles auswählen

/zu/ueberwachender/ordner/ IN_CREATE,IN_MOVED_TO /pfad/zum/script $#
Das Script sieht so aus:

Code: Alles auswählen

lxterminal -e ffmpeg -i "$1" -f flac "$1"_new.flac"
(lxterminal -e dient nur dazu ein Fenster zu sehen wenn der Vorgang beginnt). Die Weitergabe an das Script funktioniert grundsätzlich, denn wenn ich statt ffmpeg da einfach

Code: Alles auswählen

touch /pad/zu/einem/anderen/ordner/"$1"
drin stehen habe, wird in dem anderen Ordner eine leere Datei mit dem korrekten Dateinamen der hin in den Ordner kopierten Datei erstellt. Das ganze geht nur bei ffmpeg nicht. Ich habe auch schon vor der Variable $1 absolute Pfade eingerichtet (mit einem Ausgabepfad zu einem anderen als den zu überwachenden Ordner). Es tut sich einfach nichts. Der FFmpeg-Aufrufe alle in einem Terminal mit Dateinamen statt Variablen geht problemlos.

Sieht hier jemand gleich das Problem?

Werbung:
josef-wien
Ultimate Guru
Ultimate Guru
Beiträge: 5083
Registriert: 23. Sep 2008, 17:09

Re: Ordnerüberwachung mit Incron und Weitergabe Dateiname an Skript

Beitrag von josef-wien » 25. Feb 2018, 18:17

Du hast eine ungerade Anzahl von Anführungszeichen.

bunter fisch
Member
Member
Beiträge: 69
Registriert: 12. Sep 2017, 10:25

Re: Ordnerüberwachung mit Incron und Weitergabe Dateiname an Skript

Beitrag von bunter fisch » 25. Feb 2018, 20:53

Das ändert leider das Problem nicht. Auch hätte hier dennoch zumindest LXTerminal aufgehen müssen und dann bei ffmpeg eine Fehlermeldung ausgeben müssen. Es passiert aber leider gar nichts.

josef-wien
Ultimate Guru
Ultimate Guru
Beiträge: 5083
Registriert: 23. Sep 2008, 17:09

Re: Ordnerüberwachung mit Incron und Weitergabe Dateiname an Skript

Beitrag von josef-wien » 25. Feb 2018, 23:04

Das Terminal wird nach Durchführung des Befehls sofort wieder geschlossen, und zwar unabhängig vom Ergebnis des Befehls. Schau einmal nach, ob es wie bei konsole einen Parameter --noclose gibt.

abgdf
Guru
Guru
Beiträge: 3097
Registriert: 13. Apr 2004, 21:15

Re: Ordnerüberwachung mit Incron und Weitergabe Dateiname an Skript

Beitrag von abgdf » 26. Feb 2018, 00:09

bunter fisch hat geschrieben:
25. Feb 2018, 20:53
Das ändert leider das Problem nicht. Auch hätte ...
Wie kommst Du denn darauf, daß eine ungerade Anzahl von Anführungszeichen keine Änderung gegenüber einer geraden Anzahl von Anführungszeichen bewirken sollte?
In der Shell ist doch jedes Anführungszeichen wichtig (sofern kein Backslash davor ist, dann ist es nur ein normales Zeichen).

bunter fisch
Member
Member
Beiträge: 69
Registriert: 12. Sep 2017, 10:25

Re: Ordnerüberwachung mit Incron und Weitergabe Dateiname an Skript

Beitrag von bunter fisch » 26. Feb 2018, 17:51

Es wird überhaupt kein Terminal erst eröffnet, das ist ja das Problem. Auch andere Befehle, z. B. öffnen vom Firefox über das Terminal gehen nicht. DAS Fenster müsste dann ja stehen bleiben. Es tut sich einfach nichts.
Wie kommst Du denn darauf, daß eine ungerade Anzahl von Anführungszeichen keine Änderung gegenüber einer geraden Anzahl von Anführungszeichen bewirken sollte?
In der Shell ist doch jedes Anführungszeichen wichtig (sofern kein Backslash davor ist, dann ist es nur ein normales Zeichen).
Behaupte ich nicht. Ich hab nur gesagt, dass zumindest das Terminalfenster auf gehen müsste und dann eine Fehlermeldung kommen müsste.

Da tut sich wie gesagt aber nichts.

Benutzeravatar
robi
Moderator
Moderator
Beiträge: 3159
Registriert: 25. Aug 2004, 02:13

Re: Ordnerüberwachung mit Incron und Weitergabe Dateiname an Skript

Beitrag von robi » 27. Feb 2018, 00:00

bunter fisch hat geschrieben:
26. Feb 2018, 17:51
Es wird überhaupt kein Terminal erst eröffnet, das ist ja das Problem. Auch andere Befehle, z. B. öffnen vom Firefox über das Terminal gehen nicht. DAS Fenster müsste dann ja stehen bleiben. Es tut sich einfach nichts.
Ganz einfache Überlegung:
Was passiert alles beim ganz normalen Anmelden am Rechner?
Es werden ein paar dutzend Konfigurationsdateien durchlaufen die für deinen User eine komplettes Enviroment in Form von Einstellungen und Variablen generieren. Zusätzlich wird ein X-Server für dich gestartet und du bekommst das alleinige Recht diesen zu nutzen. In deinem Home befinden sich für viele Programme zusätzlich noch Konfigurationen die dann beim Start dieser Programme automatisch geladen werden können.
Wenn du jetzt irgendwelche Fenster neu eröffnest oder Konsolen eröffnest und darin Befehle absetzt, dann können alle diese auf die Enviroment-Variablen zugreifen und auch auf den X-Server und auf vieles mehr, denn sie haben all das geerbt.

Was passiert wenn du etwas über Cron/Anacorn/Incron/..... oder wie sie alle heißen, startest?
Ein Daemon der als root-User oder cron-User oder als ein andere Deamon-User gestartet ist führt ein Script aus, Es sind dabei gerade mal eine Handvoll Umgebungsvariablen gesetzt (durch systemd obendrein noch ein paar mehr Restriktionen als Erlaubnisse) insgesamt gerade so viel das bash die Standardprogramme unterhalb von /bin und /usr/bin ausführen kann, aber nicht viel mehr. Kein Homeverzeichnis, keine Ländereinstellung, keine Limits(außer was von systemd dem service erlaubt wurde), eigentlich fast gar nichts und damit kann er schonmal gar nicht auf irgendwelche Konfigurationsdateien innerhalb des Homeverzeichnisses zugreifen. Der Prozess hat einfach kein HOME keinen USER keinen WINDOWSMANAGER, keine SSH-Variablen, einfach alles nicht da, und was er auf gar keinen Fall hat dieser Prozess jetzt die Berechtigung auf irgend einen X-Server irgendwelche Ausgaben zu machen. Woher soll dieser Prozess auch wissen wer jetzt gerade angemeldet ist und wer welchen X-Server nutzt und ......

Wie kommst du jetzt bitte darauf, das sich bei dir ein Fenster, oder gar Firefox oder was auch immer öffnen sollte? Wo kämen da die ganzen Einstellungen und Berechtigungen zb für den X-Server her? Dein Script hat nur eine einzige Arbeitszeile und nichts mehr.

robi

bunter fisch
Member
Member
Beiträge: 69
Registriert: 12. Sep 2017, 10:25

Re: Ordnerüberwachung mit Incron und Weitergabe Dateiname an Skript

Beitrag von bunter fisch » 27. Feb 2018, 15:32

Dann dürfte er aber ein Skript in dem einfach
touch dateiname
drin steht auch nicht ausführen - tut er aber. Er startet das Skript definitiv, nur wenn in dem gleichen Script etwas anderes drin steht tut er nichts.

josef-wien
Ultimate Guru
Ultimate Guru
Beiträge: 5083
Registriert: 23. Sep 2008, 17:09

Re: Ordnerüberwachung mit Incron und Weitergabe Dateiname an Skript

Beitrag von josef-wien » 27. Feb 2018, 17:53

bunter fisch hat geschrieben:
27. Feb 2018, 15:32
Dann dürfte er aber ein Skript ... auch nicht ausführen
Selbstverständlich wird das Skript ausgeführt. Nachdem ich "Incron" nicht kenne, ging ich bisher davon aus, daß das Programm als angemeldeter Benutzer ausgeführt wird. Wird es jedoch als root oder als spezieller "Incron-Benutzer" ausgeführt, können nur Befehle erfolgreich sein, die erstens der Berechtigung und zweitens der Umgebung dieses Benutzers entsprechen. Ein simples touch in einem Verzeichnis mit Schreibberechtigung ist möglich, ein grafisches Programm dagegen nicht. Wenn keine speziellen Umgebungsvariablen erforderlich sind bzw. sie im Skript gesetzt werden, wird ffmpeg funktionieren, aber Du solltest sowohl das Programm als auch beide Dateien mit vollständigem Pfad angeben.

bunter fisch
Member
Member
Beiträge: 69
Registriert: 12. Sep 2017, 10:25

Re: Ordnerüberwachung mit Incron und Weitergabe Dateiname an Skript

Beitrag von bunter fisch » 27. Feb 2018, 19:26

Du solltest sowohl das Programm als auch beide Dateien mit vollständigem Pfad angeben.
Auch das habe ich getan. Ich muss $@ für den Pfad und $# für die Datei eingeben, ohne / dazwischen. Hab das mit 'echo' getestet und so den korrekten Pfad bekommen. Setze ich das gleiche in ffmpeg ein wird nichts ausgeführt. Es wird keine Datei erstellt. Die Pfade stimmen zu 100%. Ich hab das mehrfach durchexerziert, es ging kein einziges mal.

Ich finde aber zu incrontab auch keinen Error-Log wo man mal nachsehen könnte.

P.S. Es kann auch nicht an Leerzeichen im Pfad liegen, da gibt es keine hier im Test.

josef-wien
Ultimate Guru
Ultimate Guru
Beiträge: 5083
Registriert: 23. Sep 2008, 17:09

Re: Ordnerüberwachung mit Incron und Weitergabe Dateiname an Skript

Beitrag von josef-wien » 27. Feb 2018, 23:11

Leite die Ausgabe von ffmpeg in eine Datei um, indem Du am Ende nach einem Leerzeichen

Code: Alles auswählen

&>/pfad/zu/logdatei.txt
angibst.

bunter fisch
Member
Member
Beiträge: 69
Registriert: 12. Sep 2017, 10:25

Re: Ordnerüberwachung mit Incron und Weitergabe Dateiname an Skript

Beitrag von bunter fisch » 28. Feb 2018, 16:50

Ich hab es jetzt soweit hinbekommen, dass es damit

Code: Alles auswählen

output=$(basename "$1")
ffmpeg -i "$1" /ausgabepfad/"$output".mp3
funktioniert. Ich lasse hier die Ausgabe in einen anderen Ordner schreiben, daher auch Basename, damit Incrontab hier nicht in einer Endlosschleife läuft. Allerdings erklärt das nicht, wieso es vorher nicht ging. Zumindest diese (nicht gewollte) Endlosschleife hätte starten müssen. Auch jetzt startet das ganze nicht, wenn ich

Code: Alles auswählen

lxterminal -e
davor setze. Die Logfile ist dann leer. Auch wenn ich

Code: Alles auswählen

xfce4-terminal -H -x
verwende. Mir wäre hier bei so eiem automatisierten Prozess eine optische Rückmeldung wichtig.

bunter fisch
Member
Member
Beiträge: 69
Registriert: 12. Sep 2017, 10:25

Re: Ordnerüberwachung mit Incron und Weitergabe Dateiname an Skript

Beitrag von bunter fisch » 28. Feb 2018, 16:57

Wenn ich da ein '2> /pfad/zur/fehlerlog' anhänge wird dort

Code: Alles auswählen

(xfce4-terminal:10494): Gtk-WARNING **: cannot open display: 
ausgegeben.

Gräfin Klara
Hacker
Hacker
Beiträge: 327
Registriert: 23. Jun 2008, 20:51

Re: Ordnerüberwachung mit Incron und Weitergabe Dateiname an Skript

Beitrag von Gräfin Klara » 28. Feb 2018, 18:03

Ich glaube, dein cron_daemon will es detached.
Setzte am Zeilenende ein &
Bsp.
lxterminal -e irgendwas_auszuführendes params &

drcux
Hacker
Hacker
Beiträge: 380
Registriert: 9. Aug 2005, 12:14

Re: Ordnerüberwachung mit Incron und Weitergabe Dateiname an Skript

Beitrag von drcux » 1. Mär 2018, 12:34

DISPLAY=:X.Y lxterminal.....

Dein Display bekommst du raus, indem du in einer lxterminal einfach

echo $DISPLAY

eingibst...

bunter fisch
Member
Member
Beiträge: 69
Registriert: 12. Sep 2017, 10:25

Re: Ordnerüberwachung mit Incron und Weitergabe Dateiname an Skript

Beitrag von bunter fisch » 1. Mär 2018, 15:03

drcux hat geschrieben:
1. Mär 2018, 12:34
DISPLAY=:X.Y lxterminal.....
DAS IST ES. Danke dafür.

drcux
Hacker
Hacker
Beiträge: 380
Registriert: 9. Aug 2005, 12:14

Re: Ordnerüberwachung mit Incron und Weitergabe Dateiname an Skript

Beitrag von drcux » 1. Mär 2018, 18:45

www.google.de

Eingabe:

"incron lxterminal"

Zweiter Treffer....

Wobei ich aber die Lösung schon kannte.... ;-)

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast