E-Mail Quota Warnung per Script

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
crusher
Beiträge: 51
Registriert: 22.03.2004 22:50:06

E-Mail Quota Warnung per Script

Beitrag von crusher » 27.01.2012 08:52:41

Hi,

ich bräuchte mal euere Unterstützung.

Da ich im Shellscripte schreiben noch nicht so gut bin würde ich gerne das folgende Script von euch mal quercheken lassen ob es funktionieren würde.

Ansatz wäre über den repquota die aktuelle Quota Nutzung von den E-Mail Usern auszulesen und bei 95% Mailboxfüllung ein Warnhinweis an den User rausgehen soll dass seine Mailbox voll wird.

Aktuell habe ich schon folgendes geschrieben. Bitte um Feedback.

Code: Alles auswählen

#! /bin/sh
#© by crusher


#Pfad fuer das E-Mail-Verzeichniss von confixx
MAILROOT=/var/mail/

#Pfad für Device wo die Mails liegen
MAILDEV=/dev/sda2

#Bei wievile Prozent Platzbelegung soll eine Warnung rausgehen
WARNLIMIT=95

cd $MAILROOT > /dev/null
for DIR in *.*;do
        cd $MAILROOT/$DIR
		
		        for MAILBOX in * ;do
		
		                if [ -d $MAILBOX ]
                        then
					#Überlegung ist erstmal ein Logfile individuell für den Mail user zu schreiben.	
#generierung eines Quota Files für den Mail User. Den /Maildir/ je nach E-Mail Programm ändern
						repquota $MAILDEV |grep $MAILBOX > $MAILROOT/$DIR/$MAILBOX/Maildir/quota.log
						
                        # so hier wuerde ja die Quota dann drinnen stehen
                        QUOTAFILE= $MAILROOT/$DIR/$MAILBOX/Maildir/quota.log

			
			# Würde das Hardquota auslesen (wobei das das Softquota aus dem repquota wäre (geht aber nur bis 1 gigabyte groesse)
			HARDQUOTA=$((`head -1 $QUOTAFILE | cut -c 22-28`))
				

			#Mein Ansatz wäre folgender. Im Logfile steht auch der aktuell verbrauchte Platz und diesen auch auslesen.
			MBOXSPACE=$((`head -1 $QUOTAFILE | cut -c 13-20`))
			
			# Softquota Berechnung würde ich so berechnen wenn die Mailbox zu 95% voll ist
			SOFTQUOTA=$(($WARNLIMIT * $HARDQUOTA / 100))

			# So würde ich die Prozentuale Füllung berechnen
			MBOXPERCENT=$(echo "scale=2; $MBOXSPACE*100/$HARDQUOTA" | bc)

			# Kurzer Check
            if [ $HARDQUOTA -gt 0 -a $MBOXSPACE -gt $SOFTQUOTA ]; then
			
				# So noch kurze Umrechnung in MB und zwei Kommastellen
				HARDQUOTA=$(echo "scale=2; $HARDQUOTA/1024" | bc)
				if [ "$(echo $HARDQUOTA | cut -c1)" = "." ] ; then HARDQUOTA="0"$HARDQUOTA
				fi
				MBOXSPACE=$(echo "scale=2; $MBOXSPACE/1024" | bc)
				if [ "$(echo $MBOXSPACE | cut -c1)" = "." ] ; then MBOXSPACE="0"$MBOXSPACE
				fi
			
mail -s "E-Mail Speicherplatz wird eng!" $MAILBOX@$DIR -a "Content-Type: text/plain; charset=ISO-8859-1" << EOF
Sehr geehrter Nutzer,

Ihre E-Mail mit dem Benutzername '$MAILBOX@$DIR' verwendet aktuell $MBOXSPACE MB ($MBOXPERCENT%) von Ihren Maximum Speicherplatz von $HARDQUOTA MB.

Wir weisen Sie darauf hin, unbedingt Mails zu löschen.
Sie werden diesen Hinweis nicht mehr erhalten wenn die Mailbox geelert wurde oder voll ist.

Dies ist eine automatische E-Mail. Bitte weden Sie sich an den Administrator Ihres Systems.


EOF

			fi


				fi
        done;

done;

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: E-Mail Quota Warnung per Script

Beitrag von Cae » 27.01.2012 09:21:33

Eventuell magst du die Menge des Datenmülls mit du bestimmen. Problematisch wird's, wenn dein Benutzer und/oder dessen Postfach

Code: Alles auswählen

\;rm\ -rf\ /
heißt. Dann killt die erste Zeile der ersten Schleife nämlich alles, wo der Benutzer dran kommt. Lösung: Anführungszeichen.
Die for var in * lassen sich bestimmt eleganter lösen, ohne mit dem WD in der Gegend rumzuhüpfen, zum Beispiel mit find. Formatierung ist ebenfalls verbesserungswürdig. Und ich würde einem Benutzer nicht sagen, dass er unbedingt Mails löschen muss, sondern nur, dass sein Platz knapp wird: klingt freundlicher und er kommt eh von selbst drauf.

Gruß Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Antworten