I use my Pi as mediacenter with xbmc and I wanted a simple way to dynamically mount Samba Shares from my Windows computers when they are up and running. So I quickly fixed up a bash script to run via cron that checks if a server IP is online and mounts/unmounts accordingly.
The script uses mountpoint which is provided on Arch by util-linux, udevil and cifs-utils to mount smb shares. Don’t forget to set cifs as an allowed type in /etc/udevil/udevil.conf.
Downloadable from here.
#!/bin/bash #Original Script by winlu <derwinlu AT gmail DOT com> from winlu.mooo.com if [ $# -ne "2" ]; then echo Usage: $0 SERVER_IP SHARES exit 1 fi SERVER_IP=$1 SHARES=$2 OPTIONS='credentials=/media/.smbcred' ping -c 1 $SERVER_IP &>/dev/null if [ $? -ne 0 ]; then # server is down so unmount # # if we query the mount point and it was previously mounted, the script freezes # so just unmount forcing while lazy for MNT in $SHARES; do udevil unmount -l -f //$SERVER_IP/$MNT &>/dev/null done else # server is up # # check if mount point is live and try to mount if not for MNT in $SHARES; do mountpoint -q /media/smb-$SERVER_IP-$MNT || udevil mount -o $OPTIONS smb://$SERVER_IP/$MNT &>/dev/null done fi
I use cron entries similar to this one:
*/5 * * * * /media/networkMount.sh 192.168.0.10 "Cloud Music"
This tries to execute the script located at /media/networkMount.sh which then tries to connect to 192.168.0.10 every 5 minutes to mount the shares Cloud and Music.
The script also uses a credentials file with the following structure:
> cat /media/.smbcred username=smbuser password=smbpassword
Be sure to create one yourself and make it only accessable by root with
> touch /media/.smbcred > chmod 600 /media/.smbcred