понедельник, 11 июля 2011 г.

iso_mount.sh : монтируем ISO-образ из-под пользователя

Задача: примонтировать ISO-файл(ы) без прав суперпользователя.

0. Устанавливаем пакеты fuseiso, cdrkit-utils (опционально notify-send и notification-daemon)
1. Кладём в $HOME/bin файл:
#!/bin/bash

MYMNT=~/mnt
VOLID=`isoinfo -d -i "$1" |
grep '^Volume id: ' |
sed "s|^Volume id: ||"`

if [[ $VOLID == "" ]]; then
VOLID=`basename "$1" | sed "s|\.iso$||"`
fi

VOLID=`echo "$VOLID" |
sed "s|[^[:alnum:] .,()-]|_|g"`

mount | grep -q "$MYMNT/$VOLID" && {
nautilus file://"$MYMNT/$VOLID"
exit 0 ;
}

mkdir -p "$MYMNT"
fuseiso -p "$1" "$MYMNT/$VOLID" &&
{ nautilus file://"$MYMNT/$VOLID" ; } ||
notify-send -u critical -i cdrom_unmount -t 60000 "Failed to mount $VOLID"

2. в файловом менеджере "открываем" файл iso этим скриптом.
3. отмонтировать можно командой `fusermount -u "%f"' (подставляем папку, куда монтировали в %f)

для операций 2 и 3 я использую nautilus и nautilus-actions. Если у Вас другой файловый менеджер (напр. KDE файло), в скрипте нужно заменить nautilus на него.