diff --git a/mnt-sftp.sh b/mnt-sftp.sh index 8291d55..f6e14b7 100755 --- a/mnt-sftp.sh +++ b/mnt-sftp.sh @@ -18,7 +18,7 @@ function mount { --text="Please choose. Cancel to unmount drives." \ --title="Choose SSH server" \ --column "Preconfigured SSH servers" \ - ${PRESSH[*]}); then + "" ${PRESSH[*]}); then unmountquestion # If you press cancel, it should ask you to unmount all drives fi @@ -26,13 +26,34 @@ function mount { # This command cuts of everything after | SSH=$(echo $SSH | awk -F\| '{ print $1 }') + if [ "$SSH" == "" ]; then + MAN=1 + SSHUSER=$(zenity --entry --text "SSH user" --title "Enter SSH user") + SSHPASS=$(zenity --entry --hide-text --text "SSH password" --title "Enter SSH password") + SSHHOST=$(zenity --entry --text "SSH host" --title "Enter SSH host") + SSHPORT=$(zenity --entry --text "SSH port (default 22)" --title "Enter SSH port") + SSHPATH=$(zenity --entry --text "Desired root directory (default /)" --title "Enter SSH root directory") + if [ "$SSHPORT" == "" ]; then + SSHPORT=22 + fi + if [ "$SSHPATH" == "" ]; then + SSHPATH="/" + fi + + SSH="$SSHUSER-$RANDOM" + fi + # Make a local directory if not available if [ ! -e "$LOCALMOUNTDIR"/"$SSH" ]; then mkdir -p "$LOCALMOUNTDIR"/"$SSH" fi # Command to mount actually - sshfs "$SSH": "$LOCALMOUNTDIR"/"$SSH"/ -o follow_symlinks & + if [ $MAN = 0 ]; then + sshfs "$SSH": "$LOCALMOUNTDIR"/"$SSH"/ -o follow_symlinks & + else + echo "$SSHPASS" | sshfs -o password_stdin -p "$SSHPORT" "$SSHUSER"@"$SSHHOST":"$SSHPATH" "$LOCALMOUNTDIR"/"$SSH"/ -o follow_symlinks & + fi quitquestion # one more ssh server or quit? @@ -50,11 +71,20 @@ function unmountquestion { # Procedure to unmount all preconfigured SSHFS drives and exit program afterwards function unmount { - for ((i = 0; i < ${#PRESSH[*]}; i++)) + #for ((i = 0; i < ${#PRESSH[*]}; i++)) + #do + #fusermount -u "$LOCALMOUNTDIR"/"${PRESSH[$i]}" + #echo ""${PRESSH[$i]}" unmounted." + #done + + for FILE in "$LOCALMOUNTDIR"/*; do - fusermount -u "$LOCALMOUNTDIR"/"${PRESSH[$i]}" - echo ""${PRESSH[$i]}" unmounted." + if [ "$(cat /etc/mtab | grep -q "$FILE"; echo $?)" == "0" ]; then + fusermount -u "$FILE" + echo "$FILE unmounted." + fi done + exit 0 }