Сканирование SANE, кнопки scanbd и служебные разрешения

Я пытался сделать эту работу весь день. Я почти там, но чего-то не хватает. Вот история на данный момент:

  • Debian Jessie 8.3 безголовый домашний сервер
  • Сканер / принтер Canon MP140 MFP, полностью поддерживаемый SANE, через USB
  • SANE dll.conf настроен и работает (все закомментировано, кроме net и pixma)

scanimage -p --resolution 300 --format=tiff --mode Gray -x 210 -y 297 > test300.tiff... сканирует бумагу формата А4 в оттенках серого и прекрасно сохраняет ее в формате TIFF.


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'

Кажется, он работает, но не реагирует на кнопки вообще.


Я попытался остановить службу и запустить scanbd от имени пользователя root - И ЭТО РАБОТАЕТ!

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

Итак, я думаю, что это какая-то проблема с разрешениями. Я пытался изменить /etc/scanbd.conf и заменить

user = scand  
group = scanner  

с

user = root  
group = root

но потом, когда я перезапускаю сервис scanbd, это то, что я получаю, и кнопки снова не работают:

● 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)

Я, вероятно, упускаю из виду некоторые очевидные детали, но я не могу понять, что это такое. Любая помощь будет принята с благодарностью.

1 ответ

У меня наконец все заработало...

Конечной целью для меня было заставить работать кнопки сканирования. К тому времени, когда я понял это, у меня появились кнопки сканирования и сканирование по сети.

Оказывается, я смотрел на это неправильно, и, следовательно, иду на это неправильно.
Извините, я не могу записать точную последовательность команд, чтобы сделать эту работу, потому что к тому времени, когда я закончил, я запутался. Но я надеюсь, что смогу хотя бы помочь с общей логикой этого.

Так что либо scanbd (служба кнопки сканера) или saned (служба сетевого сервера сканера) может обращаться к сканеру, но не к обоим одновременно. scanbd блокирует сканер, постоянно обновляя состояние кнопки, и saned блокирует его для использования в качестве сетевого сканера.

Как это работает, используя ТОЛЬКО scanbd как услуга.
scanbd затем постоянно контролирует состояние кнопок и запускает действие, если кнопка нажата. Но он также может прослушивать вменяемый порт 6566 (tcp). Если он обнаруживает трафик, он останавливает мониторинг кнопок и запускает saned сервис, который затем берет на себя. когда saned сделано как сервер сетевого сканера, scanbd возобновляет ожидание нажатия кнопки или больше сетевого трафика на вменяемом порту.

Для того, чтобы это сработало, saned должен быть настроен дважды.
И как сервер, и как клиент на одной машине. Серверная часть запускается, когда scanbd обнаруживает сетевой трафик и описан в пункте выше.

Клиентская часть запускается вручную, когда вы запускаете сканирование через scanimageили когда scanbd обнаруживает нажатие кнопки. saned клиент должен быть настроен для подключения к сети saned сервер (тот же компьютер, то есть localhost, 127.0.0.1 или имя хоста, серверная часть 'net') - НЕ USB - что позволяет избежать конфликтов с scanbd, scanbd затем обнаруживает некоторый сетевой трафик на порту 6566 и запускается saned как сервер, как если бы это был действительно какой-то сетевой клиент.

Конфиг клиента находится в /etc/sane.d пока конфиг сервера находится в /etc/scanbd/sane.d, Конфигурация сервера должна быть скопирована туда с /etc/sane.d (просто скопируйте всю папку), а затем измените его, чтобы он выступал в роли сервера и связывался со сканером через usb, то есть независимо от того, какой бэкэнд в действительности используется сканером. В /etc/scanbd/scanbd.conf SANE_CONFIG_DIR должен указывать на saned серверная часть: /etc/scanbd/sane.d

Изменить: Кроме того, если машина защищена брандмауэром, откройте порт 6566 и загрузите модуль ядра nf_conntrack_sane:

sudo ufw allow 6566/tcp

sudo modprobe nf_conntrack_sane

и если это тогда работает, добавьте nf_conntrack_sane в /etc/modules

Другие вопросы по тегам