#!/bin/bash # These are all default values REMOTE_IN_SSHCONFIG=-1 REMOTE_USER="obsidianblk" REMOTE_HOST="Trappist1" REMOTE_PATH="/home/obsidianblk" REMOTE_PORT=22 MOUNT_POINT="$HOME/remote" PORT_VAR="" NEXT_ARG_IS_FILE=-1 OP="" SRC_FILE="" URI="" function usage() { echo "Usage: $0 [-o ] mount|unmount|remount" } function defineURI() { URI="$REMOTE_HOST:$REMOTE_PATH" if [ $REMOTE_IN_SSHCONFIG -lt 0 ]; then URI="$REMOTE_USER@$URI" PORT_VAR="-p $REMOTE_PORT" fi } if [[ "$#" -lt 1 ]]; then echo "Missing operation argument." usage exit 1 fi for arg in "$@"; do if [ $NEXT_ARG_IS_FILE -ge 0 ]; then if [ -f "$arg" ]; then SRC_FILE="$arg" source "$arg" NEXT_ARG_IS_FILE=-1 else echo "ERROR: Option file $arg missing or invalid." usage exit 1 fi else case "$arg" in mount) ;& unmount) ;& remount) if [ "$OP" != "" ]; then echo "ERROR: Multiple operations defined." usage exit 1 fi OP="$arg" ;; -o) NEXT_ARG_IS_FILE=0 ;; esac fi done if ! [[ -d "$MOUNT_POINT" ]]; then echo "ERROR: [$MOUNT_POINT] does not exist or is not a directory." usage exit 1 fi case "$OP" in mount) defineURI if ! mount | grep "$URI on $MOUNT_POINT" > /dev/null then echo "Mounting $URI on $MOUNT_POINT... " sshfs -C $PORT_VAR -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 $URI $MOUNT_POINT && ( # Success echo "Mounted." notify-send -i server 'Successfully Mounted' "$URI" &> /dev/null exit 0 ) || ( # Failure echo "Mount Failed!" notify-send -i error 'Failed to mount' "$URI" &> /dev/null exit 1 ) else echo "Remote folder is already mounted." exit 1 fi ;; unmount) defineURI echo "$URI" if mount | grep "$URI on $MOUNT_POINT" > /dev/null then echo "Unmounting $URI from $MOUNT_POINT... " fusermount -u $MOUNT_POINT && ( # Success echo "Unmount Successful." notify-send -i server 'Successfully Unmounted' "$URI" &> /dev/null exit 0 ) || ( # Failure echo "FAILED to Unmount!" notify-send error 'Failed to unmount' "$URI" &> /dev/null exit 1 ) else echo "Remote folder not mounted." exit 1 fi ;; remount) $SRC_ARG="" if $SRC_FILE != ""; then SRC_ARG="-o $SRC_FILE" fi $0 unmount $SRC_ARG $OP && $0 mount $SRC_SRG $OP ;; *) usage exit ;; esac