From: Mike Andreev <andreev@d902.iki.rssi.ru> To: sisyphus@altlinux.ru Subject: [sisyphus] hotplug Date: Thu, 9 Dec 2004 20:57:16 +0300 Message-ID: <200412092057.17441.andreev@d902.iki.rssi.ru> (raw) Здравствуйте, Мои письма почему-то до community@altlinux.ru не доходят. так что шлю сюда. вот решил поделиться, может кому-то будет полезно... [ все ниже описанное было сделано для решения моих личных задач и у меня работает. Your Mileage May Vary. конструктивная критика и замечания приветствуются ] У меня есть Flash'ка и фотоаппарат, который подключаются по USB (как диск не мантируется, но gphoto2 его поддерживает). Оба устройства опознаются, и при подключении флэшки в fstab добавляется mount-point. [ ALT Linux Sisyphus (20041111), hotplug-2004_03_29-alt7, kudzu-1.1.13-alt8 ] задача состояла в том, что бы изменить параметры mount-point. и, при наличии залогинившигося в консоль пользователя запускать от его имени необходимые комманды (mount -- для флешки, скрипт для скачивания фоток -- для фотоаппарата). как я понял updfstab не имеет возможности изменения опций монтирования, а в hotplug не предусмотрено возможности добавления "пользовательских" скриптов, поэтому было сделано следующее: в конец /sbin/hotplug добавлен вызов /etc/hotplug.d/local.hotplug этот скрипт выполняет соответствующие обнаруженному устройству файлы из /etc/hotplug.d/local/ (от root) и из $HOME/.hotplug/ (от имени пользователя консоли) соответствие скриптов устройствам проверяется по $PRODUCT (передается /sbin/hotplug, как переменная окружения). теперь при в подключении флэшки она у меня автоматически мантируется в нужное место с нужными параметрами, а при подключении фотоаппарата автоматически запускается xterm с мои скриптом. [ "лучше день потерять, потом за час долететь" (С) ;-) ] ============================================================================= /etc/hotplug.d/local.hotplug #!/bin/bash LOG_FILE=/var/log/hotplug/local DEBUG=yes export DEBUG HOTPLUG_TYPE=$1 export HOTPLUG_TYPE shift LOGGER="logger -t $(basename $0)" log_mesg () { $LOGGER "$@" } if [ -z "$HOTPLUG_TYPE" -o -z "$PRODUCT" ]; then exit 1; fi [ -z "$DEBUG" -o "$DEBUG" == "no" ] || \ log_mesg "type: '$HOTPLUG_TYPE'; env: `env`" #code to detect console user from /etc/hotplug/usb/usbcam if [ -f /var/run/console.lock ]; then CONSOLEOWNER=`cat /var/run/console.lock` elif [ -f /var/lock/console.lock ]; then CONSOLEOWNER=`cat /var/lock/console.lock` else CONSOLEOWNER= ; fi #user's home directory if [ -n "$CONSOLEOWNER" ]; then CONSOLEOWNER_HOME=`awk -F: \ "/^$CONSOLEOWNER/ { print \\\$6 }" /etc/passwd` fi; #run scripts if $PRODUCT in known PRODUCT_ID=`echo $PRODUCT | sed -e 's;/;-;g'` log_mesg "ID: $PRODUCT_ID; CONSOLEOWNER: $CONSOLEOWNER / $CONSOLEOWNER_HOME" [ -f /etc/hotplug.d/local/$PRODUCT_ID ] && . /etc/hotplug.d/local/$PRODUCT_ID [ -x /usr/bin/sudo -a -n "$CONSOLEOWNER_HOME" -a \ -f "$CONSOLEOWNER_HOME/.hotplug/$PRODUCT_ID" ] && \ sudo -u $CONSOLEOWNER $CONSOLEOWNER_HOME/.hotplug/$PRODUCT_ID ============================================================================= ============================================================================= /etc/hotplug.d/local/c76-5-100 #!/bin/bash # JetFlash 512M LOGGER="logger -t $(basename $0)" log_mesg () { $LOGGER "$@" } case $ACTION in add) HOTLPUGED_DEV=`awk '!/^#/ && /,kudzu,/ { dev=$1 } END{ print dev; }' /etc/fstab` if [ -z "$HOTLPUGED_DEV" ]; then exit 1; fi MOUNT_DIR=/mnt/jetflash MOUNT_OPT=noauto,user,kudzu,sync,dirsync,exec,nodev,nosuid,iocharset=cp1251,codepage=866,shortname=winnt export HOTLPUGED_DEV export MOUNT_DIR log_mesg "Known hardware ($PRODUCT) connected as $HOTLPUGED_DEV" # check if MOUNT_DIR exists [ -d $MOUNT_DIR ] || mkdir $MOUNT_DIR # change fstab TMP=`mktemp /etc/fstab-XXXXX` || ( log_mesg "Can not create tmp file" && exit 1 ) awk -v dev=$HOTLPUGED_DEV -v dir=$MOUNT_DIR -v opt=$MOUNT_OPT -- \ '/^\/dev/ { if($1==dev){ $2=dir; $4=opt; } } {print; } ' /etc/fstab > $TMP [ -s $TMP ] && cat $TMP > /etc/fstab rm -f $TMP ;; remove) log_mesg "JetFlash was unpluged..." # may be later here will be some actions ;; esac ============================================================================= /home/mike/.hotplug/c76-5-100 #!/bin/bash # JetFlash 512M if [ "$ACTION" == "add" -a -n "$MOUNT_DIR" ]; then mount $MOUNT_DIR && logger -t $(basename $0) "JetFlash was mounted at $MOUNT_DIR by `whoami`" fi ============================================================================= /home/mike/.hotplug/4a9-3077-1 #!/bin/bash # Cannon PowerShot S50 if [ "$ACTION" == "add" ]; then logger -t $(basename $0) "Start to download images " DISPLAY=":0" export DISPLAY XAUTHORITY=/home/mike/.Xauthority export XAUTHORITY xterm -e "/home/mike/bin/camera_downloader.sh" & fi; -- Mike Andreev
next reply other threads:[~2004-12-09 17:57 UTC|newest] Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top 2004-12-09 17:57 Mike Andreev [this message] 2004-12-09 18:10 ` Mike Andreev 2004-12-09 19:39 ` Anton Farygin 2004-12-10 8:48 ` Mike Andreev 2004-12-10 13:39 ` Anton Farygin 2004-12-10 16:13 ` Andrey Rahmatullin 2004-12-10 16:55 ` Andriy Dobrovol's'kii 2004-12-10 17:27 ` Mikhael Korneev 2004-12-11 11:45 ` [sisyphus] 2.6.* рулез или маздай? Denis Smirnov 2004-12-11 11:46 ` [sisyphus] " Michael Shigorin 2004-12-10 21:24 ` [sisyphus] hotplug Aleksandr Blokhin 2004-12-10 21:47 ` Andrey Rahmatullin 2004-12-12 9:45 ` Alexey Morozov 2004-12-12 18:10 ` [sisyphus] hotplug Konstantin A. Lepikhov 2004-12-12 20:40 ` Aleksandr Blokhin 2004-12-13 9:47 ` Ivan Fedorov 2004-12-13 9:49 ` Ivan Fedorov 2004-12-13 11:01 ` Konstantin A. Lepikhov 2004-12-13 11:19 ` Ivan Fedorov 2004-12-13 14:34 ` Konstantin A. Lepikhov 2004-12-13 14:47 ` Ivan Fedorov 2004-12-13 17:22 ` Konstantin A. Lepikhov 2004-12-13 17:42 ` Ivan Fedorov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=200412092057.17441.andreev@d902.iki.rssi.ru \ --to=andreev@d902.iki.rssi.ru \ --cc=sisyphus@altlinux.ru \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
ALT Linux Sisyphus discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/sisyphus/0 sisyphus/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 sisyphus sisyphus/ http://lore.altlinux.org/sisyphus \ sisyphus@altlinux.ru sisyphus@altlinux.org sisyphus@lists.altlinux.org sisyphus@lists.altlinux.ru sisyphus@lists.altlinux.com sisyphus@linuxteam.iplabs.ru sisyphus@list.linux-os.ru public-inbox-index sisyphus Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.sisyphus AGPL code for this site: git clone https://public-inbox.org/public-inbox.git