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

Смотреть 18 лет видео

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

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

06.11.09 19:08 kstep

Tips & tricksАвтомонтирование в userspace с помощью incrond

Раньше я писал, как можно динамически монтировать устройства и хосты с помощью autofs. Этот способ не лишён недостатков, основной из которых — монтирование всегда из-под рута. А значит надо ставить рута в известность о своих паролях-ключах (то есть держать копию ~/.ssh и ~/.netrc в ~root), что далеко не всегда удобно, а кроме того вредно с точки зрения безопасности. Не говоря уже о том, что этот метод работает только если ты единственный, кто сидит за этим компом.


Решение мне подсказал muhas, и звучит оно просто — inotify.

Для моих же целей я посчитал, что лучшим решением будет использовать incrond. Это разновидность крона, которая запускает команды по событиям в файловой системе, а для слежения за файлам использует libinotify.

Нам потребуется: пакет incron (apt-get install incron), sshfs/curlftpfs (или ещё какие демоны-монтировщики, смотря что будем монтировать) и немного настроить инкрон.

Формат конфигов инкрона прост, как полено:

имя_файла список_флагов_через_запятую команда_для_запуска


За подробностями отправляю в man 5 incrontab, а здесь скажу то, чего в манах нет, и на что сам напоролся. Дело в том, что поля в конфиге инкрона должны разделяться пробелом. Именно пробелом и именно одним. Табуляции и прочие «пробельные символы» не подходят. Серии пробелов — тоже, т.к. «лишние» пробелы в итоге попадут либо в список флагов, либо в имя команды, так что рискуете получить в сислоге ошибку «выполняемый файл не найден», т.к. инкрон попытается запутить не «команду_для_запуска», а « команду_для_запуска», с лидирующими пробелами в имени команды.

Теперь, собственно, конфигурация:

mkdir -p ~/remote/ssh ~/remote/ftp ~/remote/ftpa


Каталог ftpa нужен для монтирования хостов в активном режиме (есть у меня пара таких хостингов, что такое требуют).

Дальше добавляем себя в /etc/incron.allow, чтобы инкрон нас допустил к себе:

1
2
sudo vim /etc/incron.allow
<добавляем строчку со своим логином>


Теперь правим инкронтаб:

1
2
3
4
5
6
incrontab -e

/home/kstep/remote/ssh IN_ATTRIB,IN_CREATE,IN_NO_LOOP sshfs -f $#: $@/$#
/home/kstep/remote/ftp IN_ATTRIB,IN_CREATE,IN_NO_LOOP curlftpfs -f $# $@/$#
/home/kstep/remote/ftpa IN_ATTRIB,IN_CREATE,IN_NO_LOOP curlftpfs -f -o ftp_port=- $# $@/$#
 


IN_CREATE монтирует при создании каталога с именем хоста в соответствующем подкаталоге ~/remote. Если такой каталог уже есть, то благодаря IN_ATTRIB монтирование произойдёт на touch. Это не так удобно, как в случае с autofs, но другого выхода я пока не нашёл.

IN_NO_LOOP не даёт монтировать каталог второй раз, до тех пор пока он не размонтируется. Реально этот флаг не даёт инкрону продолжать следить за файлом-каталогом до тех пор, пока не завершиться запущенный процесс-обработчик. А так как curlftpfs и sshfs по дефолту становятся демонами, то я им даю флаг -f, чтобы они оставались на виду и не демонизировались, не давая тем самым инкрону запускать себя второй раз.

Собственно вот, эта связка прекрасно работает у меня на данный момент =)

Этот пост является кросс-постом из моего блога: http://p-nut.info/blog/avtomontirovanie_v_userspace_s_pomoschyu_incrond.html



urykhy 10.11.09 10:35 # +0
если указывать IN_NO_LOOP - то монтируется только 1 хост.
если не указывать - то вроде как всё ок работает. каждый хост монтируется только 1 раз.
kstep 30.11.09 14:36 # +0
Да, и верно =) Я сначала этого не заметил, т.к. тестировал на одном хосте, а потом и забил на это. Но за дополнение спасибо =)

Лучшие блоги (все 85)
Топ пользователей Топ блогов
Топ пользователей Топ блогов
Элита (все 1723 из 138 городов)
Топ пользователей Топ блогов
В сети: exelens

Новенькие: LiS-31, zpirit, aspotashev, Dedulya, Sinner
welinux.ru

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

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


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

Online video HD

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

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

Full HD video online

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

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

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