Questão Varredura SANE, botões scanbd e permissões de serviço


Eu tenho tentado fazer isso funcionar o dia todo. Estou quase lá, mas ainda falta alguma coisa. Aqui está a história até agora:

  • Servidor Jessie 8.3 headless home
  • Scanner / impressora Canon MP140 MFP totalmente suportado pela SANE, via USB
  • SANE dll.conf configurado e funcionando (tudo comentado exceto líquido e pixma)

scanimage -p --resolution 300 --format=tiff --mode Gray -x 210 -y 297 > test300.tiff ... digitaliza um papel A4 em escala de cinza e o salva como tiff muito bem.


sudo service scanbd status
● scanbd.service - Scanner button polling Service
   Loaded: loaded (/lib/systemd/system/scanbd.service; disabled)
   Active: active (running) since Fri 2016-02-19 19:24:03 CET; 23min ago
 Main PID: 1740 (scanbd)
   CGroup: /system.slice/scanbd.service
           └─1740 /usr/sbin/scanbd -f

Feb 19 19:24:03 server scanbd[1740]: /usr/sbin/scanbd: dbus match type='signal',interface='org.freedesktop.Hal.Manager'

Parece estar funcionando, mas não reage aos botões.


Tentei parar o serviço e iniciar o scanbd como root - E FUNCIONA!

sudo scanbd -f
scanbd: dbus match type='signal',interface='org.freedesktop.Hal.Manager'
scanbd: trigger action for button-1 for device pixma:04A9172B_ABCDEF with script example.script

Então, eu acho que é algum tipo de problema de permissão. Eu tentei mudar /etc/scanbd.conf e substitua

user = scand  
group = scanner  

com

user = root  
group = root

mas quando eu reinicio o serviço scanbd é o que eu recebo, e os botões não funcionam de novo:

● scanbd.service - Scanner button polling Service
   Loaded: loaded (/lib/systemd/system/scanbd.service; disabled)
   Active: active (running) since Fri 2016-02-19 20:07:11 CET; 4s ago
 Main PID: 2562 (scanbd)
   CGroup: /system.slice/scanbd.service
           └─2562 /usr/sbin/scanbd -f

Feb 19 20:07:11 server scanbd[2562]: /usr/sbin/scanbd: dbus match type='signal',interface='org.freedesktop.Hal.Manager'
Feb 19 20:07:11 server scanbd[2562]: /usr/sbin/scanbd: Not Primary Owner (-1)
Feb 19 20:07:11 server scanbd[2562]: /usr/sbin/scanbd: Name Error (Connection ":1.96" is not allowed to own the service "de.kmux.scanbd.server" due to security policies in the configuration file)

Eu provavelmente estou negligenciando alguns detalhes óbvios, mas não consigo descobrir o que é. Qualquer ajuda seria muito apreciada.


1


origem


você viu isso? sane.10972.n7.nabble.com/… - MariusMatutiae
@MariusMatutiae Sim, eu vi isso. Parece semelhante, mas pelo que vejo, é outra questão. Ambiente diferente também - Debian 6 e um combo sane / scanbd mais antigo. E alguns arquivos ausentes que estão presentes no meu caso. - vto80


Respostas:


Eu finalmente tenho tudo funcionando ...

O objetivo final para mim era fazer com que os botões digitalizados funcionassem. Até o momento eu descobri, eu tenho os botões de digitalização funcionando e digitalização em rede também.

Acontece que eu estava olhando para o lado errado, e consequentemente indo para o caminho errado.
Me desculpe, eu não posso escrever a sequência exata de comandos para fazer este trabalho, já que eu fiz uma grande bagunça quando terminei. Mas espero poder pelo menos ajudar com a lógica geral disso.

Então, ou scanbd (o serviço de botão do scanner) ou saned (o serviço do servidor de rede do scanner) pode acessar o scanner, mas não os dois ao mesmo tempo. scanbd bloqueia o scanner atualizando constantemente o estado do botão e saned bloqueia para uso como um scanner de rede.

A maneira como funciona é usando APENAS scanbd como um serviço.
scanbd em seguida, monitora constantemente o estado dos botões e dispara alguma ação se um botão for pressionado. Mas também consegue ouvir no sane-port 6566 (tcp). Se detectar tráfego, ele pára de monitorar os botões e inicializa o saned serviço que então assume. Quando saned é feito sendo um servidor de scanner de rede, scanbd continua a aguardar um pressionamento de botão ou mais tráfego de rede na porta sane.

Para que isso funcione, saned deve ser configurado duas vezes.
Tanto como servidor e cliente na mesma máquina. A parte do servidor é iniciada quando scanbd detecta tráfego de rede e é descrito no parágrafo acima.

A parte do cliente é iniciada manualmente quando você inicia uma verificação via scanimage, ou quando scanbd detecta o pressionamento de um botão. o saned cliente deve ser configurado para se conectar a uma rede saned servidor (a mesma máquina, portanto, localhost, 127.0.0.1 ou nome do host, backend 'líquido') - NÃO USB - evitando assim conflitos com scanbd. scanbd em seguida, detecta algum tráfego de rede na porta 6566 e dispara sanedcomo servidor, como se fosse realmente algum cliente de rede.

A configuração do cliente está em /etc/sane.d enquanto a configuração do servidor está em /etc/scanbd/sane.d. A configuração do servidor deve ser copiada de lá /etc/sane.d (apenas copie a pasta inteira) e, em seguida, modificado para atuar como um servidor e se comunicar com o scanner via USB, ou seja, qualquer back-end que o scanner realmente use. Dentro /etc/scanbd/scanbd.conf o SANE_CONFIG_DIR deve apontar para o saned parte do servidor: /etc/scanbd/sane.d

Edit: Além disso, se a máquina é firewall, abra a porta 6566 e carregue o módulo do kernel nf_conntrack_sane:

sudo ufw allow 6566/tcp

sudo modprobe nf_conntrack_sane

e se funcionar, adicione nf_conntrack_sane para /etc/modules


2