Today, I wanted a quick utility to help me enter passwords for encfs during mount.
I was looking for something plain, simple and userfriendly.
At the end I ended up to use the shell for it.
Yes, using dialog/Xdialog you can be a GUI programmer in minutes.
If the text is scrambled, you can download the script here.
Cheers!
![]()
#!/bin/bash
PATH=”/bin:/sbin:/usr/bin:/usr/sbin:/home/rrs/bin”
export PATH
XDIALOG_HIGH_DIALOG_COMPAT=1
export XDIALOG_HIGH_DIALOG_COMPAT
ASKPASS=`which ssh-askpass`;
CRYPT=”/mnt/windoze/.linuxrc”;
TARGET=”/var/tmp/.linuxrc”;
FUSERMOUNT=`which fusermount`;
ENCFS=`which encfs`;
ARGS=”-u”;
#set -vx
DIALOG=`which dialog`;
[ -n “$DISPLAY” ] && [ -x /usr/bin/Xdialog ] && DIALOG=“Xdialog”
mount()
{
# This is one good way to use dialog to accept passwords
# But for some reason encfs isn’t able to read the password
# supplied by dialog
# Hence, I’m using ssh-askpass to get the password
#$ENCFS $CRYPT $TMP —extpass=`$DIALOG —title “Password” —password —inputbox “Enter Password” 18 45 2`;
}
check_mount()
{
# Since encfs isn’t returning good exit status
# I’m using this hack to figure out if the mount
# passed or failed.
grep -i encfs /etc/mtab;
retval=$?;
case $retval in
0)
$DIALOG —wrap —title “Information”\
—msgbox “Successfully Mounted!” 10 41;;
1)
$DIALOG —wrap —title “Information”\
—msgbox “Mount Failed!” 10 41;;
esac
}
prelim_mount_check()
{
grep -i encfs /etc/mtab;
retval=$?;
case $retval in 0) $DIALOG —wrap —title “Caution”\ —yesno “ALREADY MOUNTED!\nDo you want to umount ?” 0 0
case $? in 0) umount; esac;; 1) #$DIALOG —wrap —title “Information”\ #—yesno “Do you want to mount crypt ?”\ #case $? in # 0) mount; check_mount;; #esac;; esac }umount()
{
$FUSERMOUNT -u $TARGET;
}
ask_passwd()
{
$DIALOG —wrap —title “Password”\
—help “Contact Author Ritesh Raj Sarraf\nEmail: rrs@researchut.com”\
—inputbox “Please enter your password” 18 45 2 > /tmp/passwd.$$;
retval=$?;
$INPUT=`cat /tmp/passwd.$$`;
#rm -f /tmp/passwd.$$;
case $retval in
0)
mount;;
#echo “Password is ‘$input’”;;
1)
echo “Cancelled”;;
255)
echo “Box Closed”;;
esac
}
main()
{
$DIALOG —wrap —title “Question”\
—help “Contact Author Ritesh Raj Sarraf\nEmail: rrs@researchut.com”\
—yesno “Do you want to mount your encrypted filesystem ?” 0 0
case $? in
0)
prelim_mount_check;;
255)
$DIALOG —wrap —title “Aborted”\
—infobox “Cancelled”
esac
}
main
Trackback link: