Não é possível executar comandos colocar os udisks em scripts do udev

1

Estou tentando iniciar um script quando uma unidade LUKS é inserida. Então eu configurei uma regra do udev:

KERNEL=="sd*3", ACTION=="add", ATTRS{serial}=="XXX", ATTRS{manufacturer}=="XXX", RUN+="/usr/local/bin/syncer-trigger /dev/%k"

O script é executado como usuário normal e chama xce4-terminal internamente. Em seguida, o emulador de terminal chama outro script para descriptografar a unidade e montá-lo (com o comando udisksctl ).

Mas udisksctl preso, parece que está esperando o udev terminar de configurar a unidade LUKS (o dispositivo char correspondente não existe no momento)

Então, formou uma fechadura clássica. Agora, como executo o comando *AFTER* que a unidade está instalada?

P.Se eu rodar xfce4-terminal em segundo plano (com nohup) e dormir no outro script, o udev mataria a janela do terminal xfce4 diretamente

EDITAR

Eu tentei dbus-triggerd :

./dbus-triggerd "type=signal,interface=org.gtk.Private.RemoteVolumeMonitor" -v --shell ./dump.sh

No dump.sh é apenas echo "$@" , eu posso ver a saída do dbus-triggerd, mas estou vendo argumentos vazios aqui

A interface está correta, posso confirmar isso com

dbus-monitor interface=org.gtk.Private.RemoteVolumeMonitor
    
por daisy 05.12.2013 / 16:47

1 resposta

1

Acho que você está em um nível baixo demais para tentar fazer isso com a UDEV. Em vez disso, tentaria fazê-lo com o D-BUS.

Eu encontrei este tutorial intitulado: JACKdbus - Integração de área de trabalho - backend-switching que discute como, usando dbus-triggerd . O tutorial destina-se ao OSX, mas deve ser adaptável para atender às suas necessidades de Linux.

A peça-chave dessa solução é dbus-triggerd .

    
por 05.12.2013 / 18:04

Tags