fredvej
Group: Members
Posts: 12
Joined: June 2006 |
|
Posted: Feb. 26 2007,18:34 |
|
Here's a script to mount something from a remote system running an SSH server. On your local machine you need a mountpoint, load the fuse module and mount using sshfs.
Code Sample | # script mounts a path from a remote system using fuse and sshfs
THISPROG=`basename $0` PUBLICIP=12.34.56.78 LOCALIP=192.168.0.2 SSHPORT=22
USAGE=" Usage : $THISPROG [options] {username} {remote path to mount} {local mount point}
local mount point must be an existing directory
options :
-r {IP address} : use IP adress for remote host , e.g. -r 123.45.67.89 Default remote IP is $PUBLICIP
-p {port number} : Port number to use for ssh connection , default $SSHPORT
-l {IP address | d} : remote host at local LAN , no caching. Use provided IP address or default (d) $LOCALIP "
############ FUNCTIONS ######################
Exit_if_Error () { if [ $RETURN -ne 0 ] then echo "$COMMAND failed with return code $RETURN" exit $RETURN fi }
LoadModule () { MOD2LOAD=$1 ISLOADED=`lsmod | grep $MOD2LOAD` if [ -z "$ISLOADED" ] then COMMAND="$SUDO /sbin/modprobe -v $MOD2LOAD" echo "probing module with $COMMAND" $COMMAND RETURN=$? Exit_if_Error fi }
############ MAIN ###########################
# follow_symlinks not in DSL 3.2 #FSOPTIONS="-o compression=yes,transform_symlinks,follow_symlinks,allow_other,nonempty" FSOPTIONS="-o compression=yes,transform_symlinks,allow_other,nonempty" HOSTIP=$PUBLICIP
while getopts 'r:p:l:hH' OPTION do case $OPTION in r) HOSTIP=$OPTARG ;; l) HOSTIP=$OPTARG if [ "$HOSTIP" = "d" ] then HOSTIP=$LOCALIP fi FSOPTIONS="${FSOPTIONS},sshfs_sync,no_readahead,cache=no" ;; p) SSHPORT=$OPTARG ;; h|H) echo "$USAGE" exit 1 ;; *) echo "$USAGE" exit 1 ;; esac done
shift `expr $OPTIND - 1` FSOPTIONS="-p $SSHPORT $FSOPTIONS"
LOGINAS=$1 RPATH="$2" MPOINT="$3"
if [ $# -ne 3 ] then echo " Number of parameters must be 3 - aborting !" echo "$USAGE" exit 1 fi
USELOGIN="${LOGINAS}@"
if [ ! -d "$MPOINT" ] then echo " mount point '$MPOINT' is not found or is not a directory - aborting !" echo "$USAGE" exit 2 fi
USERID=`id -u` if [ "$USERID" = "0" ] then SUDO="" else SUDO=/usr/bin/sudo if [ -n "$FSOPTIONS" ] then # local uid on local mountpoint, remote user's id on remote filesystem FSOPTIONS="${FSOPTIONS},uid=$USERID" fi fi
LoadModule fuse
COMMAND="$SUDO sshfs \"${USELOGIN}${HOSTIP}:${RPATH}\" \"$MPOINT\" ${FSOPTIONS}" echo "mounting with $COMMAND" $SUDO sshfs "${USELOGIN}${HOSTIP}:${RPATH}" "$MPOINT" ${FSOPTIONS} RETURN=$? Exit_if_Error
|
Unmount :
Code Sample | sudo fusermount -u $MPOINT |
Enjoy
-------------- /Freddy
|