#!/bin/bash # Ensure we have a valid TMPDIR if [ ! -d "${TMPDIR}" ]; then TMPDIR="`getconf DARWIN_USER_TEMP_DIR 2>/dev/null`" if [ ! -d "${TMPDIR}" ]; then TMPDIR="/var/tmp" fi if [ ! -d "${TMPDIR}" ]; then TMPDIR="/tmp" fi fi # Config HOST="vera.uberzach.com" SHARE="media" LOCK="${TMPDIR}/mountMedia.mounting" REMOTE_USER="${USER}" # Hack for mismatched usernames if [ "${USER}" == "tv" ]; then REMOTE_USER="atv" fi function findMedia { MEDIA="" for i in "/Volumes/${SHARE}"*; do if [ -d "${i}" ] && [ -d "${i}/TV/30 Rock" ]; then MEDIA="${i}" fi done } # Skip this whole shebang if we've got a valid link if ~/bin/video/isMediaMounted; then exit 0 fi # Check for connectivity (and server live-ness) if ! ~/bin/video/timeout -t 2 nc -z "${HOST}" 139 >/dev/null 2>&1; then echo "`basename "${0}"`: Host not available: ${HOST}" 1>&2 exit 1 fi # Connect as needed findMedia if [ -z "${MEDIA}" ]; then LOCKED=0 touch "${LOCK}" read MOUNT_PID < "${LOCK}" if [ -n "${MOUNT_PID}" ]; then if ps -A -o pid | grep -q "${MOUNT_PID}"; then LOCKED=1 fi fi if [ $LOCKED -eq 0 ]; then echo $$ > "${LOCK}" ~/bin/video/timeout -t 30 osascript -e 'tell application "Finder" to mount volume "smb://'"${REMOTE_USER}@${HOST}/${SHARE}"'"' sleep 5 rm -f "${LOCK}" fi fi # Fix links findMedia if [ -n "${MEDIA}" ]; then if [ -d /mnt ] && touch /mnt/media.writeTest >/dev/null 2>&1; then rm -f /mnt/media.writeTest if [ -e /mnt/media ] || [ -h /mnt/media ]; then rm -f /mnt/media fi ln -s "${MEDIA}" /mnt/media fi if [ -e "${HOME}/media" ] || [ -h "${HOME}/media" ]; then rm -f "${HOME}/media" ln -s "${MEDIA}" "${HOME}/media" fi else echo "`basename "${0}"`: Unable to mount media volume" 1>&2 exit 1 fi