Re: awk Script
am 18.05.13 13:33 schrieb Martin Klaiber <martinkl@zedat.fu-berlin.de>:
Hallo Martin und danke
Jim Knuth <jk@jkart.de> wrote:
Hallo, ich hab hier dieses Script, dass auch nen prima Job macht.
Das script hängt an die sieben Einträge der /etc/passwd weitere drei
an. Ist das so beabsichtigt?
nein. Erzeugt erstmal eine neue mit dem Format
web16p10:x:1203:5000::/home/mail/web16p10::userdb_mail=maildir:~/Maildir
userdb_quota_rule=*:bytes=500M
Das ist User, uid,gid,Maildir home und Quota
warum Du dann das passwd-Format benutzt. Oder erwartet dovecot das?
ja, zur Quota Ermittlung
#!/bin/bash
awk 'BEGIN { FS = OFS = ":"; }
$1 ~ /^web[0-9]+p[0-9]+$/ {
$7 = ":userdb_mail=maildir:~/Maildir
userdb_quota_rule=*:bytes=1G";
print;
}' /etc/passwd > /etc/dovecot/quota
sleep 2
cp /etc/dovecot/passwd.quota /etc/dovecot/pw.quota.backup
sleep 2
cp /etc/dovecot/quota /etc/dovecot/passwd.quota
Wozu brauchst Du die "sleep 2"-Befehle? Normalerweise sollte die
Bearbeitung des nächsten Befehls erst starten, wenn der vorherige
beendet ist.
sicher, hab ich "bloss so" reingebaut. Kann sicher raus ;)
Ich würde das gern automatisieren, d.h. wenn sich bei der
/etc/passwd was ändert, das gleich mit nem Cronjob in die
Datei /etc/dovecot/quota usw. schreiben.
Mit find -cmin +n kannst Du feststellen, ob eine Datei vor n+ Minuten
geändert wurde.
Aber so, dass das vorherige erhalten bleibt und nur die
Neuen Einträge/User in der passwd Datei in die passwd.quota
dazu kommen.
Wenn Einträge doppelt vorhanden sein dürfen, einfach den letzten
Befehl ersetzen durch
cat /etc/dovecot/quota >> /etc/dovecot/passwd.quota
Wenn Einträge nur einfach vorhanden sein sollen und die Reihenfolge
keine Rolle spielt, einfach die passwd.quota durch sort -u filtern.
Wenn die ursprüngliche Reihenfolge erhalten bleiben muss und nichts
doppelt vorhanden sein soll, dann musst Du erst mit diff die Differenz
der Dateien bilden und das dann anhängen.
Was ist, wenn Einträge in /etc/passwd entfernt werden, müssen die dann
auch aus der passwd.quota entfernt werden?
das ist eine gute Frage, aber irrelevant. Dovecot wird ja dann den
nicht mehr vorhanden User ignorieren
Naja. Ich benutze dovecot nicht und kann nur raten, dass es vielleicht
darum gehen soll, dovecot die quotas der einzelnen user mitzuteilen?
ja, stimmt. S.o.
Gruß, Martin
--
Mit freundlichen Grüßen,
with kind regards,
Jim Knuth
---------
“Jesus wurde gekreuzigt, weil er bemerkt wurde.
Deswegen verschwinde ich häufig von der Bildfläche.”
Bob Dylan
Reply to: