FreeBSD devd palm

Материал из OpenWiki
Перейти к: навигация, поиск

Настройка автозапуска jpilot для синхронизации Palm при нажатии на HotSync

Как известно, в devd в FreeBSD может выполнять опеределённые действия при подключении и отключении устройств. Но к сожалению, X11-программы тяжело запустить не из X11-сеанса.

Для этого написан простой shell скрипт, который запускается при старте сеанса X и принимает команды через сокет. У меня это делается на локальной машине за firewall, в других случаях наверное лучше использовать Unix domain socket, а на многопользовательской машине использовать какой-либо другой способ IPC

 #!/bin/sh

 while true
 do
   cmd=`nc -l 10001`
   case $cmd in
        jpilot)
                pgrep jpilot >/dev/null || (( jpilot &)  ; sleep 1)
                jpilot -s
                ;;
        xterm)  xterm &
                ;;
        quit)
                exit
                ;;
   esac
 done

 exit 0
 

xterm упомянут для отладки :-)

А в /etc/devd.conf добавляется строка, посылающая jpilot этому скрипту при присоединении устройства ucom0:

 attach 10 {
        device-name "ucom0";
        action "rm -f /dev/pilot";
        action "ln -sf /dev/cuaU0 /dev/pilot";
        action "echo jpilot | nc  localhost 10001";
 };
 detach 10 {
        device-name "ucom0";
        action "rm -f /dev/pilot";
 };