Auto-Mount Shares

With OS X LaunchAgents

Mounty Can

With Mounty you are in full control of your favourite file shares.

Features

  • Mounts SMB/CIFS, AFP, FTP or NFS shares when you log in to your Mac
  • Retreives passwords from OS X Keychain
  • Supports OS X Notification-Center
  • Easy to configure
  • Uses OS X components only

System Requirements

  • Mac OS X 10.8 or newer recommended
  • SMB/CIFS, AFP, FTP, NFS shares available in you network
  • Login credentials (username and password) for said shares

Get Mounty 0.15.1.2919 KiB

Use at your own risk (also see legal notices).

How does it work?

Install Mounty

Double-click the package Mounty.pkg you find in the disk image provided above and follow the instructions of the installer. Eventually the file ~/Scripts/mounty/mounty.conf will be opened in TextEdit so you can add the details of shares you want to mount at login. Further information about configuring Mounty can be found in the chapter below.

Configure Mounty

Um Mounty mitzuteilen, welche Freigaben es einhängen soll, trägt man deren Details in eine Konfigurationsdatei (standardmäßig ~/Scripts/mounty/mounty.conf) ein. Die Einträge sind durch Semikola getrennt und werden als Zeichenfolge der Variablen mounty_shares zugewiesen. Jeder Eintrag folgt dieser Syntax:

protocol://user@server/share

Um zur Windows-Freigabe Documents des Servers mit der IP 192.168.0.100 als Benutzer bill zu verbinden, bedarf es also:

smb://bill@192.168.0.100/Documents

Eine Beispielkonfiguration sieht wiefolgt aus:

mounty_shares="smb://$USER@192.168.0.100/$USER;smb://$USER@192.168.0.100/Public;smb://$USER@192.168.0.100/Documents";

Benutzername und Server können pro Freigabe individuell gesetzt werden. Im obigen Beispiel ist der Kurzname des Benutzers auf Mac-Client und Freigaben-Server identisch und kann mittels $USER zur Laufzeit bestimmt werden.

Mounty starten

Mounty lässt sich manuell mit dem folgenden Befehl ausführen. Wird wie beim Anmeldevorgang keine Konfigurationsdatei angegeben, verwendet Mounty die Datei ~/Scripts/mounty/mounty.conf.

mounty.sh <config file>

Mounty und die Passwörter

Da in der Regel beim Anmelden eines lokalen Benutzers auf dem Mac dessen Schlüsselbund freigegeben wird, kann man mittels Komandozeilen-Programm security auch von Skriptseite auf im Schlüsselbund hinterlegte Passwörter zugreifen. Mounty macht hiervon Gebrauch, unter der Prämisse, daß die benötigten Passwörter bereits im Schlüsselbund gespeichert sind. Es ist also erforderlich, daß man alle Shares zuvor einmal über Finder mountet und dabei die Checkbox Zum Schlüselbund hinzufügen antickt. Wer möchte, kann security im Terminal gerne selbst ausprobieren. Das von Mounty verwendete Kommando sieht im Kern wiefolgt aus:

security find-internet-password -w -s "$server" -a "$user"

Bei Anmeldung los!

Die in OS X integrierten LaunchAgents erlauben das ereignisgesteuerte Ausführen von eigenen Skripten. Ich verwenden das Login-Ereignis RunAtLoad um Mounty anzustossen.

Der zu diesem Zweck erstellte LaunchAgent in ~/Library/LaunchAgents sieht wiefolgt aus:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	...
	<key>ProgramArguments</key>
	<array>
		<string>bash</string>
		<string>-c</string>
		<string>~/Scripts/LaunchAgents/runatload.sh</string>
	</array>
	<key>RunAtLoad</key>
	<true/>
</dict>
</plist>

Man beachte das Array ProgramArguments, in welchem die Shell bash instruiert wird, das benutzereigene Sklript ~/Scripts/LaunchAgents/runatload.sh für dieses Ereignis auszuführen. Bash unterstützt Pfadnamen-Erweiterung (Globbing), welches den komfortablen Einsatz von Platzhaltern wie ~ (Tilde = Benutzer-Ordner) erlaubt und damit auf die Bedürfnisse eines jeden Benutzers zugeschnittene Lösungen ermöglicht. Das Skript ~/Scripts/LaunchAgents/runatload.sh kann vom Benutzer bei Bedarf um weitere Einträge ergänzt werden. Möchte man den Agenten ausschließlich für Mounty nutzen, kann man stattdessen direkt zu Mounty verweisen.

Der neu erstellte Agent wird beim Anmelden ausgeführt. Er kann aber auch zu Testzwecken mit den folgenden Kommando in Terminal manuell gestartet bzw. beendet werden, wobei <plist> der Dateipfad der PLIST-Datei ist:

launchctl load|unload <plist>