feat: refactored sshfs function. Now accepts -p, -o, -F, -u -n. by default will mount with the current user. use -u for different user, and -n for no user. -F for alternate ssh config file, -- for alternate port (22 is default) -o for additional sshfs options.
parent
7181f1ee69
commit
67417a609a
|
@ -8,23 +8,69 @@ function smount() {
|
||||||
|
|
||||||
local HOST
|
local HOST
|
||||||
local PORT
|
local PORT
|
||||||
local config
|
local CONFIG=$SSH_CONFIG
|
||||||
|
local PORT=22
|
||||||
|
|
||||||
|
declare SSHOPTS
|
||||||
|
declare OPTION
|
||||||
|
declare OPTARG
|
||||||
|
declare OPTIND
|
||||||
|
declare MNTUSER
|
||||||
|
while getopts 'u:np:o:F:' OPTION; do
|
||||||
|
# echo $OPTION $OPTARG
|
||||||
|
case "$OPTION" in
|
||||||
|
p)
|
||||||
|
PORT=$OPTARG
|
||||||
|
# echo option d: $DIRS
|
||||||
|
;;
|
||||||
|
u)
|
||||||
|
MNTUSER=$OPTARG
|
||||||
|
;;
|
||||||
|
n)
|
||||||
|
MNTUSER=_NONE_
|
||||||
|
;;
|
||||||
|
o)
|
||||||
|
echo "adding sshfs option: $OPTARG"
|
||||||
|
SSHOPTS="$SSHOPTS -o $OPTARG"
|
||||||
|
;;
|
||||||
|
F)
|
||||||
|
echo "using SSH Config file at: $OPTARG"
|
||||||
|
CONFIG=$OPTARG
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo unknown option $OPTION
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
shift $((OPTIND - 1))
|
||||||
|
|
||||||
|
# first item is nowsource, second is local mount point, third is possbile local user
|
||||||
HOST=$(sed 's/.*@\(.*\):.*/\1/' <<<"$1")
|
HOST=$(sed 's/.*@\(.*\):.*/\1/' <<<"$1")
|
||||||
# TODO sed search for -p and extract port, below assumes 3 and 4 position
|
|
||||||
PORT=$([[ $3 = "-p" ]] && echo $4 || echo 22)
|
|
||||||
[[ ! $(host_reachable $HOST $PORT) ]] && echo host $HOST not reachable, aborting mount && return 1
|
[[ ! $(host_reachable $HOST $PORT) ]] && echo host $HOST not reachable, aborting mount && return 1
|
||||||
if [[ $(mounted $2) ]]; then
|
if [[ $(mounted $2) ]]; then
|
||||||
echo "aborting mount: $1 already mounted at $2"
|
echo "aborting mount: $1 already mounted at $2"
|
||||||
else
|
else
|
||||||
echo "SSHFS: mounting $1 at $2"
|
|
||||||
mkdir -p $2
|
mkdir -p $2
|
||||||
# can add any options after mount point directory like -o default_permissions
|
# can add any options after mount point directory like -o default_permissions
|
||||||
if [[ $SSH_CONFIG ]]; then
|
config=$([[ -f $CONFIG ]] && echo "-F $CONFIG")
|
||||||
[[ ! -f "$SSH_CONFIG" ]] && ssh_config "$SSH_CONFIG"
|
if [[ ! $MNTUSER == "_NONE_" ]]; then
|
||||||
config=$([[ -f $SSH_CONFIG ]] && echo "-F $SSH_CONFIG")
|
MNTUSER=${MNTUSER:-$USER}
|
||||||
|
id=$(id -u ${MNTUSER})
|
||||||
|
if [[ $id ]]; then
|
||||||
|
SSHOPTS="$SSHOPTS -o uid=$id -o allow_other"
|
||||||
|
else
|
||||||
|
echo no user ${MNTUSER} on this machine, aborting mount
|
||||||
|
return 1
|
||||||
fi
|
fi
|
||||||
# echo sshfs "$*" "$config"
|
else
|
||||||
sshfs $* $config
|
MNTUSER=""
|
||||||
|
fi
|
||||||
|
args="-p $PORT $SSHOPTS $config $1 $2"
|
||||||
|
echo SSHFS $([[ $MNTUSER ]] && echo mounted as user ${MNTUSER}): $args
|
||||||
|
sshfs $args
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Reference in New Issue