Wie heute bei macfidelity gelesen warnt Mac OS X ja bekanntermaßen leider erst recht spät das die Festplatte voll ist. Fidel hat in deinem Blogbeitrag ein Programm vorgestellt das einem bei einem selbst definierten Wert rechtzeitig warnt.
Da ich keine Lust habe die Software bei jedem einzelnen Mac zu installieren und zu konfigurieren (das müsste ich dann mehr als 100 mal machen) habe ich mich für eine Script variante entschieden :)
Wir haben bei uns in der Firma schon einen Ordner auf jeden Mac für Scripte (/Library/wartungsscripts/), dieser wird mit einer Softwareverteilung mit den entsprechenden Scripten gefüllt.
Das Script muss natürlich mittels „chmod +x scriptname“ scriptfähing gemacht und die Rechte mittels chown auf root:wheel gesetzt werden.
Das Scrip prüft den Festplattenplatz und warnt per E-Mail wenn weniger als 500 MB frei ist, der wert kann selbstverständlich angepasst werden.
Das Script mit Kommentaren zu Erklärung:
#!/bin/sh
#Minimum groesse in KB ab der gewarnt wird
minfreespace=512000
# E-Mail Adressen
mailto=email@mydomain.de
mailfrom=email@senderdomain.de
####################################
# Ab hier keine Änderungen machen! #
####################################
# Computernamen Herausfinden
macname=$(hostname -s)
# Den belegten Fetsplattenplatz herausfinden
freespace=$(df -k . | awk ‚FNR==2 {print $4}‘)
# Einfache if Anweisung mit logging im Systemlog und E-Mail senden wenn weniger als $minfreespace frei ist
if [ $freespace -lt $minfreespace ]
then
# Mit sleep ein wenig warten um sicherzustellen das auch die netzwerkverbindungen schon geladen sind.. ist ne angewohnheit von mir ;)
SLEEP 15
echo „Der Mac $macname hat weniger als $minfreespace KB freien Festplattenplatz“ | mail -s „Rechner $macname hat zu wenig Festplattenplatz“ $mailto -r $mailfrom
logger [Check Free Space] – Not enough free Disk Space.
else
logger [Check Free Space] – Disk space OK
fi
Damit das ganze dann auch noch vom System automatisch gestartet wird müssen wir das Script mit Launchd starten. Mit Launchd kann man Scripte (ähnlich wie cron) zu bestimmten Zeiten, beim Systemstart oder beim System shutdown ausführen.
Ich habe mich für die Variante Systemstart entschieden, somit wird das Script mittels Launchd beim Systemstart ausgeführt
Damit Launchd das Script startet muss einfach in dem Ordner /System/Library/LaunchDaemons/ eine Plist Datei mit dem Namen com.private.checkhd.plist angelegt werden (oder ein eigener Fantasie-Name ;) ).
Der Inhalt der plist Datei für Launchd:
<?xml version=“1.0″ encoding=“UTF-8″?>
<!DOCTYPE plist PUBLIC „-//Apple//DTD PLIST 1.0//EN“ „http://www.apple.com/DTDs/PropertyList-1.0.dtd“>
<plist version=“1.0″>
<dict>
<key>Label</key>
<string>com.private.checkhd</string>
<key>Program</key>
<string>/Library/wartungsscripts/checkhd.sh</string>
<key>ProgramArguments</key>
<array>
<string>checkhd.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Ihr müsst den Pfad zum Script entsprechend anpassen, oder ich legt das Script auch unter /Library/wartungsscripts/ mit dem Namen checkhd.sh ab.
Wichtig:
– Das Script muss ausführbar sein! (chmod +x script)
– Das Script und die plist für Launchd muss Besitzer root und Gruppe wheel sein (chown root:wheel datei)
Das ganze dann einfach mit einer Softwareverteilung im Netzwerk verteilen… fertig :)
Fragen ? Fragen !
:)