Видео ролики бесплатно онлайн

Смотреть 365 видео

Официальный сайт sosamba138 24/7/365

Смотреть видео бесплатно

23.09.10 14:44 assaron

How-to`sАвтомонтирование и _удобное_ отмонтирование внешних дисков без DE

В этом посте я поделюсь своим опытом в настройке сабжа. В результате,
если Вы захотите, то сможете получить автомонтирование, которое ничего
не требует от пользователя, — легкая часть, и отмонтирование парой нажатий
клавиш без мышкокликанья — чуть посложнее.



Рассказано на примере Debian'а, поэтому для других систем могут быть некоторые
отличия.

Общая идея заключается в том, чтоб с помощью udev монтировать внешние диски
в /media/flash/%k, где %k — имя устройства ядра. А затем по нажатию шортката
спрашивать у пользователя, что он хочет отмонтировать.

Монтирование.

Здесь ничего сложного. Просто добавим несколько правил для udev. Для этого
в /etc/udev/rules.d добавим файл с правилами. На мой взгляд, лучше, чтоб он
выполнялся в конце, поэтому я назвал его z99_automount.rules.

Пару строчек на добавление:

1
2
3
4
5
6
7
ENV{ID_FS_UUID_ENC}!="ff010feb-a650-4c3b-9f9e-7b534fb58a0e",\
ENV{ID_FS_UUID_ENC}!="4978-CAB3",\
KERNEL!="sda*",\
ACTION=="add",\
ENV{DEVTYPE}=="partition",\
RUN+="/bin/mkdir -p /media/flash/%k",\
RUN+="/bin/mount /dev/%k /media/flash/%k -o umask=000"


Первые две строчки проверяют, что подключаемый раздел не относится к моему
внешнему винту — его я не считаю флешкой, для него есть свои правила. Третья
не позволяет примонтировать основной винт таким образом. Четвертая говорит сама
за себя. Пятая проверяет, что то, что сейчас обрабатывается — это раздел, а не,
скажем, весь диск. Шестая создает точку монтирования. Седьмая — монтирует с
доступом всем пользователям (umask=000).

При извлечении диска, будет происходить удаление лишнего мусора — директории
и записи в mtab'е, если не было правильного отмонтирования:

1
2
3
4
5
6
7
ENV{ID_FS_UUID_ENC}!="ff010feb-a650-4c3b-9f9e-7b534fb58a0e",\
ENV{ID_FS_UUID_ENC}!="4978-CAB3",\
KERNEL!="sda*",\
ACTION=="remove",\
ENV{DEVTYPE}=="partition",\
RUN+="/bin/umount /dev/%k",'
RUN+="/bin/rmdir /media/flash/%k"


Здесь, я думаю, все понятно.

Отмонтирование.

Во-первых, напишем небольшой скрипт /usr/local/bin/uumount, который будет
принимать на вход имя флешки и отмонтировать ее из /media/flash/.

1
2
3
4
5
6
7
8
#!/bin/bash
device=`echo "$1" | /bin/sed -e 's/^\.*//' -e 's#/##'`
if [ -z "$device" ]
then
    echo "Bad arguments"
    exit 1
fi
/bin/umount "/media/flash/$device"


Во второй строчке из имени девайса удаляются слеши и начальные точки, чтоб
нельзя было отмонтировать что-то левое.

Затем добавим этот скрипт в /etc/sudoers:

%floppy ALL=ALL, NOPASSWD: /usr/local/bin/uumount


Теперь пользователи из группы floppy могут использовать его без пароля.

А теперь напишем скрипт, который собственно и будет спрашивать у пользователя,
что он хочет отмонтировать:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/bin/bash

FLASH_ROOT="/media/flash"
notify="notify-send"
uumount="/usr/local/bin/uumount"

flashes=(`grep -oP "^[^ ]* $FLASH_ROOT/[^/ ]* " /etc/mtab | awk '{ print $1; }' | sed 's#/dev/##'`)
n=${#flashes[@]}
select="dmenu -l $n"

if [ $n -eq 0 ]
then
    $notify "Nothing to unmount"
    exit 0
fi

device=$(
(
i=1
for flash in ${flashes[@]}
do
    echo $i $flash: `ls $FLASH_ROOT/$flash`
    i=$(($i+1))
done
) | $select | awk -F " " '{ print $2; }' | sed s/://
)

if [ -z $device ]
then
    exit 0
fi

result=`sudo $uumount $device 2>&1 | head -1`
if [ $? -eq 0 ]
then
    $notify $device unmounted
else
    $notify $result
fi


Для уведомлений используется notify-send, для выбора — dmenu. Соответственно,
необходимо поставить пакеты libnotify-bin и suckless-tools или подобрать им
альтернативы.

Ну и в конце ставим этот скрипт на горячую клавишу.


Теги:

psyX 23.09.10 15:04 # +0
кто бы подсказал, как отмонтировать через udev карту памяти вытащенную из кардридера? у меня не происходит ACTION=="remove" при выдергивании карты если она смонтирована, remove происходит только при отключении всего картридера :(
assaron 23.09.10 15:12 # +0
ну, во-первых, неправильно отмонтировать _после_ вытаскивания
а во-вторых, попробуй запустаить udevadm monitor и вытащить карту, посмотри, происходят ли вообще какие-то события по этому поводу
psyX 23.09.10 15:15 # +0
происходят только действия change...

такая задумка, хочу выдергивать мотом размонтировать. смонтировать же можно с sync.
assaron 23.09.10 15:18 # +0
sync жутко тормозит запись

ну если change относится к нужному устройству, попробуй что-нибудь на это действие повесить
psyX 23.09.10 15:41 # +0
наверное это не совсем правильно.
segoon 24.09.10 00:24 # +0
Мягко говоря, согласен. Если на флешке (или что там у вас) стоит FAT или ext2, то о сохранности данных не может быть и речи. Нужно делать umount _до_ физического воздействия, иначе вся отложенная (или просто незаконченная) запись не будет завершена.
muhas 23.09.10 15:11 # +2
давно юзаю вот это (udev+скрипт)
отмонтирование через dmenu

в своем бложике писал удев правила для автомаунта и размаунта по выдергиванию(правда выдергивать не очень-то рекомендуется, но может кому и не помешает)
1
2
ACTION=="add", KERNEL=="sd[a-z][0-9]", RUN+="/usr/bin/pmount -c utf8 -w -s --umask 000 /dev/%k", OPTIONS="last_rule"
ACTION=="remove", KERNEL=="sd[a-z][0-9]", RUN+="/usr/bin/pumount -l /dev/%k"

всего две строки =) правда процесс запускаетс от рута. но su на пользователя вашего никто не отменял

Но то что это всё УДОБНОЕ... удобно это что-нить вроде hillman, udiskie, disksystemtray использовать... в общем ищущий да обращет
assaron 23.09.10 15:17 # +-2
su на пользователя — это костыль, т.к. может быть не один пользователь, а несколько
ну и отмонтировать через pumount тоже не очень удобно, нужно брать консоль писать много букв, думать, какой же диск надо отмонтировать и т.п.
спасибо за ссылки, посмотрю
muhas 23.09.10 15:23 # +1
ну скрипт в топике тоже всего лишь с одним пользователем работает =) отмантировать через sudo pumount - и писать ничего не надо. в том udev правиле что я привел он применяется автоматом (у меня дома менюшка с помощью dmenu сделана). да и в посте на который я отвечал скрипту отмонтирования тоже задаются параметры ;)
assaron 23.09.10 15:26 # +0
скрипт в топике работает с кем угодно из группы floppy
assaron 23.09.10 15:28 # +0
но в принципе да, если делать pmount от рута, а от пользователя sudo pumount, тогда получится тоже самое
assaron 23.09.10 15:31 # +0
взял бы, и написал уже про dmenu, я бы раньше стал пользоваться, а то мне все лень было писать ;)
muhas 23.09.10 15:44 # +1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/sh

LABEL=`/bin/ls -1Q /media/ | /bin/sed 's/\"/\[/;s/\"/\]/' | grep -v 'smbnet' |   /usr/bin/dmenu -fn '-xos4-terminus-medium-r-normal--12-120-72-72-c-60-*-*' -nb '#737373' -nf '#e7e3e7'  -sb '#e7e3e7' -sf '#737373' -p "Umount:"`
LABEL=`/bin/echo "$LABEL" | /bin/sed 's/\[//;s/\]//'`
RETURN=$(/usr/bin/pumount /media/"$LABEL" 2>&1)

if [ ! -z "$LABEL" ]; then
    if [ -z "$RETURN" ]; then
    /usr/bin/notify-send "Устройство $LABEL успешно размонтировано"
    else
    /usr/bin/notify-send "Ошибка размонтирования устройства!" "$RETURN"
    fi
fi

exit 0


ну а так по dmenu в блог иногда пишу (достаточно уже написал), а что считаю интересным вилинуксовцем пишу тут(кстати, а что записи по тегам не работают уже? о_О нажал на "bash" в списке тегов топика а там пустая страница с надписью записи по тегу и номерами страниц - а контента нет)

Посты Комментарии
Последние посты
    Посты Комментарии
    Последние комментарии
      Посты Комментарии
      Изменения
        Посты Комментарии Изменения Черновики Избранное
        Черновики (все)
          Посты Комментарии Изменения Черновики Избранное
          Избранное (всё)
            Посты Комментарии Изменения Черновики Избранное
            Лучшие блоги (все 140)
            Топ пользователей Топ блогов
            Топ пользователей Топ блогов
            Элита (все 2774 из 212 городов)
            Топ пользователей Топ блогов
            welinux.ru

            Смотреть видео онлайн

            Онлайн видео бесплатно


            Смотреть русское с разговорами видео

            Online video HD

            Видео скачать на телефон

            Русские фильмы бесплатно

            Full HD video online

            Смотреть видео онлайн

            Смотреть HD видео бесплатно

            School смотреть онлайн