#!/bin/bash # Set to remote share SRCMNT="192.168.240.1:/mnt/storage/share" # Set to local mount path DSTMNT="/media/share" # Do not edit! HOST=$(echo -n $SRCMNT | cut -d':' -f1) SRCDOWN=1; SRCSRVUP=0; # Check for required utils NMAP=$(which nmap); PING=$(which ping); if [ $(echo -n $NMAP | wc -m) -le 1 ]; then echo "Error: nmap required"; exit; fi if [ $(echo -n $PING | wc -m) -le 1 ]; then echo "Error: ping required"; exit; fi echo " * Preparing to mount $SRCMNT ..." echo -n " * Waiting for $HOST " # Wait for ping while [ $SRCDOWN -ne "0" ]; do $PING -q -c 1 -w 1 $HOST &> /dev/null; SRCDOWN=$?; if [ $SRCDOWN -eq "0" ]; then break; fi echo -n '.'; sleep 3; done # Got ping, now wait for nfs service while [ $SRCSRVUP -ne "1" ]; do SRCSRVDOWN=$($NMAP -sT -p 2049 -P0 -T5 -n $HOST | grep open | wc -l) if [ $SRCSRVDOWN -eq "1" ]; then break; fi echo -n '.'; sleep 3; done echo " Up." # Got NFS Service, but FreeNAS rejects auth until settled # So retry every 10 seconds (usually mounts by 3rd try) if [ ! "$(grep $SRCMNT /etc/mtab)" ]; then echo -n " * Mounting $SRCMNT on $DSTMNT " while [ ! "$(grep $SRCMNT /etc/mtab)" ]; do mount -t nfs $SRCMNT $DSTMNT &> /dev/null if [ ! "$(grep $SRCMNT /etc/mtab)" ]; then echo -n "." sleep 10 else echo " Done." break; fi done else echo " * Already mounted: $SRCMNT " fi