postexec-Skript soll Dateien eines Users finden und löschen...

21/10/2007 - 14:32 von Michael Hagedorn | Report spam
Hallo.
Wir haben eine Samba-Freigabe, die regelmàßig volllàuft, da die zum
schnellen Austausch gedachten Files nicht verschoben sondern immer
kopiert werden.
Nun kann man bei Samba ja beim Ausloggen ein postexec-Script ablaufen
lassen, welches dieses Problem lösen würde.
Wie müsste das aussehen, wenn man die Dateien eines Users suchen und in
diesem speziellen Ordner nach Abmeldung löschen würde?

Erste Ansàtze sehen so aus:
(#!/bin/bash)
for i in $(find * /daten/gemeinsam -user <username>); do rm $i; done

Der Username könnte nun mit "whoami" oder so entsprechend eingefügt
werden. Oder geht es noch eleganter?
Danke f. Tipps,
M.

Ach ja: man könnte natürlich auch gleich die Samba-Variablen benutzen --
sowas in der Art wie
postexec = echo "Logoff am %T als %U an %m" >> /var/log/samba/info.log
 

Lesen sie die antworten

#1 Volker Grabsch
21/10/2007 - 18:00 | Warnen spam
Michael Hagedorn schrieb:
Wir haben eine Samba-Freigabe, die regelmàßig volllàuft, da die zum
schnellen Austausch gedachten Files nicht verschoben sondern immer
kopiert werden.
Nun kann man bei Samba ja beim Ausloggen ein postexec-Script ablaufen
lassen, welches dieses Problem lösen würde.



Bist du dir da sicher? Ich fànde es ziemlich nervig, wenn $USER1 immer
solange eingeloggt bleiben müsste, bis $USER2 dessen Daten zu sich
kopiert hat.

Davon abgesehen: Ich habe auch schon zum "schnellen Austausch" E-Mail
gesehen. Das làuft besser, als man zunàchst glauben mag, solange die
Dateien keine 100 MB groß werden.

Wie müsste das aussehen, wenn man die Dateien eines Users suchen und in
diesem speziellen Ordner nach Abmeldung löschen würde?



Ich glaube, das ist die falsche Frage. Wie wàre es mit:

"Wie lösche ich alle Dateien, die mind. einen Tag alt sind?"

(oder: die

(#!/bin/bash)
for i in $(find * /daten/gemeinsam -user <username>); do rm $i; done



Abgesehen davon, dass mir eine zeitbasierte Strategie sinnvoller
erscheint:

Diese Konstruktion kommt nicht mit exotischen Dateinamen klar.
Und das "*" hat in dem Kommando überhaupt nichts zu suchen!

Einfacher und sauberer:

find /daten/gemeinsam -user "$USER" -exec rm {} \;

Auch stellt sich die Frage, ob du nur Dateien oder auch Verzeichnisse
löschen möchtest. Ich fànde es eleganter, nur die Dateien zu löschen:

find /daten/gemeinsam -user "$USER" -type f -exec rm {} \;

So können zwar Symlinks und Verzeichnisse übrigen bleiben, aber
was soll's - die fressen ja keinen Speicherplatz, um den es dir
hier geht.

Der Username könnte nun mit "whoami" oder so entsprechend eingefügt
werden.



Besser als "whoami":

id -n

Ach ja: man könnte natürlich auch gleich die Samba-Variablen benutzen --
sowas in der Art wie
postexec = echo "Logoff am %T als %U an %m" >> /var/log/samba/info.log



Da kriegst du Probleme mit dem Quoting, sobald der User einen etwas
exotischen Username oder Passwort hat.


Volker Grabsch
<<(())>>
Administrator
NotJustHosting GbR

Ähnliche fragen