Ordner automatisch erstellen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
newbyDebian
Beiträge: 6
Registriert: 17.10.2014 22:21:27

Ordner automatisch erstellen

Beitrag von newbyDebian » 18.10.2014 17:24:20

Ich habe folgenden Bereich: /home/userx/Abgabe
Nun soll folgendes Script laufen, jedes Mal wenn der User den Ordner Angabe löscht, soll er automatisch neu erstellt werden.
Wie kann ich das unter Debian realisieren??
Danke, LG Chris

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: Ordner automatisch erstellen

Beitrag von cosmac » 18.10.2014 20:36:28

hi,

mit inotifywait aus Debianinotify-tools könnte man auf eine Änderung im home-Verzeichnis warten, vergleichen, ob "Abgabe" gelöscht wurde und es dann neu erzeugen. Das ganze könnte in einer Endlosschleife in einem Script laufen, das in .profile oder in .bashrc im Hintergrund gestartet wird.

Ungetestet, nur so ungefähr aus dem Gedächtnis...
Beware of programmers who carry screwdrivers.

tomi89
Beiträge: 269
Registriert: 21.08.2014 00:21:52

Re: Ordner automatisch erstellen

Beitrag von tomi89 » 18.10.2014 23:37:11

Ich würde einfach in /etc/crontab einen passenden cronjob hinzufügen:

Code: Alles auswählen

*/1 * * * * user test -d /home/userx/Abgabe || mkdir /home/userx/Abgabe >/dev/null 2>&1
Es wird im Intervall einer Minute überprüft ob das Verzeichnis noch existiert, falls negativ wird das Verzeichnis neu angelegt.


Oder falls der Ordner von einem beliebigen Ort herüber kopiert werden soll:

Code: Alles auswählen

*/1 * * * * user test -d /home/userx/Abgabe || cp -a /wo_auch_immer/Abgabe /home/userx/Abgabe >/dev/null 2>&1

newbyDebian
Beiträge: 6
Registriert: 17.10.2014 22:21:27

Re: Ordner automatisch erstellen

Beitrag von newbyDebian » 19.10.2014 00:27:48

das mit dem Cronjob funktioniert wunderbar:

Code: Alles auswählen

*/1 * * * * user test -d /home/userx/Abgabe || mkdir /home/userx/Abgabe >/dev/null 2>&1
Nur eine Frage was bedeutet das /dev/null 2>&1 ???
Kann ich jedes Mal wenn der Ordner wirklich erstellt werden muss das in eine Logdatei schreiben z.B. /var/ScriptLog.txt ???

Danke für die Hilfe.
LG Chris

DeletedUserReAsG

Re: Ordner automatisch erstellen

Beitrag von DeletedUserReAsG » 19.10.2014 00:33:54

Nur eine Frage was bedeutet das /dev/null 2>&1 ???
Kann ich jedes Mal wenn der Ordner wirklich erstellt werden muss das in eine Logdatei schreiben z.B. /var/ScriptLog.txt ???
Es heißt insgesamt befehl >/dev/null 2>&1 und bedeutet, dass sämtliche Ausgaben, die normalerweise nach stdout oder stderr (also 1 und 2) rausgehen würden (bei Cronjobs allerdings üblicherweise als Mail verschickt werden) kommentarlos entsorgt werden. Ich persönlich halte das für eine schlechte Idee, im Normalfall möchte man wissen, was schiefgelaufen ist.

Und wenn du es loggen willst, ginge das z.B. so:

Code: Alles auswählen

mkdir /pfad/zum/dir && echo "Verzeichnis erstellt" >> /pfad/zum/logfile.txt
Deine Fragezeichentaste klemmt, btw..

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Ordner automatisch erstellen

Beitrag von rendegast » 19.10.2014 18:50:11

Debianincron soll das nach manpage können

Code: Alles auswählen

/pfadA/verz IN_DELETE_SELF /pfadB/new.sh $@/$# $%
Aber Debian599801 ist von 2010-10,
http://bts.aiken.cz/view.php?id=491 wohl auch upstream noch nicht gefixt.
http://inotify.aiken.cz/?section=incron&page=changelog


walkaround

Code: Alles auswählen

/pfadA IN_DELETE /pfadB/new.sh $@/$# $%
mit einem Test auf die entsprechenden verz im Skript new.sh.
Die Maskenmodifizierer
,IN_ISDIR
,IN_ONLYDIR
funktionieren hierbei leider auch nicht wie erwartet und können weggelassen werden.
new.sh in der Art

Code: Alles auswählen

#!/bin/sh

DTE=$(date "+%F %T")

DEL="$1"
case "$DEL" in
    /pfadA/dir1|/pfadB/dir2)
    echo "$DTE OPTS: $@" >> /logpfad/incron.job.log
    mkdir -p "$DEL"
    ;;
    *)
    ;;
esac
Zuletzt geändert von rendegast am 19.10.2014 19:23:45, insgesamt 1-mal geändert.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

newbyDebian
Beiträge: 6
Registriert: 17.10.2014 22:21:27

Re: Ordner automatisch erstellen

Beitrag von newbyDebian » 19.10.2014 19:23:40

niemand hat geschrieben:
Nur eine Frage was bedeutet das /dev/null 2>&1 ???
Kann ich jedes Mal wenn der Ordner wirklich erstellt werden muss das in eine Logdatei schreiben z.B. /var/ScriptLog.txt ???
Es heißt insgesamt befehl >/dev/null 2>&1 und bedeutet, dass sämtliche Ausgaben, die normalerweise nach stdout oder stderr (also 1 und 2) rausgehen würden (bei Cronjobs allerdings üblicherweise als Mail verschickt werden) kommentarlos entsorgt werden. Ich persönlich halte das für eine schlechte Idee, im Normalfall möchte man wissen, was schiefgelaufen ist.

Und wenn du es loggen willst, ginge das z.B. so:

Code: Alles auswählen

mkdir /pfad/zum/dir && echo "Verzeichnis erstellt" >> /pfad/zum/logfile.txt
Deine Fragezeichentaste klemmt, btw..
Das funktioniert für meine Zwecke wunderbar so, DANKESCHÖN

newbyDebian
Beiträge: 6
Registriert: 17.10.2014 22:21:27

Re: Ordner automatisch erstellen

Beitrag von newbyDebian » 19.10.2014 19:38:19

Jetzt hab ich es so wie kann ich in der Log Datei auch das Datum-Uhrzeit rein schreiben??

Code: Alles auswählen

*/1 * * * * wachhund wachhund -d /mnt/SWAP/Scanner || mkdir /mnt/SWAP/Scanner >/dev/null 2>&1 && echo "Ordner Scanner erstellt" >> /var/ScriptLog.txt

DeletedUserReAsG

Re: Ordner automatisch erstellen

Beitrag von DeletedUserReAsG » 19.10.2014 19:59:00

Ich lege dir mal den Bash Beginners Guide nahe.

Code: Alles auswählen

mkdir /pfad/zum/dir && echo "Verzeichnis erstellt: $(date)" >> /pfad/zum/logfile.txt
Für Formatierungsmöglichkeiten von date siehe dessen Hilfe oder Manpage.

Deine Fragezeichentaste klemmt immer noch, btw..

newbyDebian
Beiträge: 6
Registriert: 17.10.2014 22:21:27

Re: Ordner automatisch erstellen

Beitrag von newbyDebian » 19.10.2014 20:36:17

wenn ich das Datum so formatieren will dann tut er nix mehr

Code: Alles auswählen

$(date +%Y-%m-%d_%H:%M)

Benutzeravatar
4A4B
Beiträge: 962
Registriert: 09.11.2011 11:19:55
Kontaktdaten:

Re: Ordner automatisch erstellen

Beitrag von 4A4B » 19.10.2014 21:02:45

Das Prozentzeichen hat in der Crontab eine spezielle Funktion:
'man 5 crontab' hat geschrieben: The entire command portion of the
line, up to a newline or % character, will be executed by /bin/sh or by the shell specified in the SHELL variable
of the crontab file. Percent-signs (%) in the command, unless escaped with backslash (\), will be changed into
newline characters, and all data after the first % will be sent to the command as standard input.
Du musst die Prozentzeichen also mit einem Backslash maskieren

newbyDebian
Beiträge: 6
Registriert: 17.10.2014 22:21:27

Re: Ordner automatisch erstellen

Beitrag von newbyDebian » 19.10.2014 21:16:53

DANKESCHÖN an ALLE es funktioniert nun wunderbar :D :D :D

Antworten