LINUX.ORG.RU

Немного подправить правило для udev

 ,


0

1

Всем привет. Написал небольшой скритик, который при подключении конкретной железяки к USB выдает notify. Вообщем на 99.9% он работает, и вот он сам:

 KERNEL=="ttyUSB?", ATTRS{idVendor}=="067b",
 ATTRS{idProduct}=="2303", ATTRS{serial}=="0000:00:1d.3",
 SYMLINK+="converter1", 
 RUN+="/home/mitya/trash/notify-convertor.sh 'Serial2USB convertor:' 'Connected! --> $KERNEL'"                                 

И выдает вот такую вот вещь: http://i.piccy.info/i7/b666e9531c0d0bfd26bd69a4e444e393/4-44-129/12361509/con...

Проблема: почему вместо /dev/ttyUSB1 оно выдает $KERNEL? Разве не должно произойти автоподставление?

notify-convertor.sh

#!/bin/bash                                                                                     
su mitya alt-notify-send.sh "$1" "$2" 6000 "/home/mitya/trash/converter.png"

alt-notify-send.sh

#!/bin/sh

user=`whoami`
panel=unity-2d-panel
pids=`pgrep -u $user $panel`
title=$1
text=$2
timeout=$3
icon=$4


if [ -z "$title" ]; then
    echo You need to give me a title >&2
exit 1
fi
if [ -z "$text" ]; then
    text=$title
fi
if [ -z "$timeout" ]; then
   timeout=60000
fi

for pid in $pids; do
     # find DBUS session bus for this session
     DBUS_SESSION_BUS_ADDRESS=`grep -z DBUS_SESSION_BUS_ADDRESS \
     /proc/$pid/environ | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//'`
     # use it

     #icon hack:
    if [ -z $icon ]; then
       DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS \
       notify-send -u low -t $timeout "$title" "$text"
    else
       DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS \
       notify-send -u low -t $timeout -i "$icon" "$title" "$text"
    fi
done
GreenBag ★★
() автор топика

Подозреваю, что из-за одинарных кавычек.

Лучше так написать:

/\/dev\/%k 
тогда точно работать будет

еще как вариант:

$env(KERNEL)

Eddy_Em ☆☆☆☆☆
()
Последнее исправление: Eddy_Em (всего исправлений: 2)
Ответ на: комментарий от Eddy_Em

Благодарю! Сработал 1й вариант.

Хотя, что интересно, вначале выдает /dev/5-2, а затем уже через пару секунд /dev/ttyUSB1. Что это за 5-2 та и не понял. (Как и пока не понимаю, что означает %k)

GreenBag ★★
() автор топика
Ответ на: комментарий от GreenBag

Вот это у тебя костылищи (%

Для того что-бы дубас раздуплился, ему достаточно DISPLAY. Лично я примерно так дергаю сервисы по эвентам:

for user in $(loginctl list-users | awk '{print $2}' | xargs); do
	su ${user} -c \
	 "export DISPLAY=$(readlink -f /run/user/$(id -u ${user})/X11-display |\
	 sed -e 's@/tmp/.X11-unix/X@:@'); \ 
	 systemctl --user ${ACTION} ${TYPE}@${CONTEXT}.target"
    done
vasily_pupkin ★★★★★
()
Ответ на: комментарий от vasily_pupkin

Да, действительно, немного «сложнее» для восприятия (как по мне), но гораздо элегантнее. Спасибо, возможно и так перепишу (:

GreenBag ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.