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

3070
vto80

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

  • 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
Вы видели это? http://sane.10972.n7.nabble.com/scanbd-problem-with-dbus-permission-td17255.html MariusMatutiae 8 лет назад 0
@MariusMatutiae Да, я видел это. Выглядит похоже, но из того, что я вижу, это совсем другая проблема. Различная среда также - Debian 6 и старая комбинация sane / scanbd. И некоторые недостающие файлы, которые присутствуют в моем случае. vto80 8 лет назад 0

1 ответ на вопрос

2
vto80

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

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

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

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

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

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

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

Конфигурация клиента включена, /etc/sane.dа конфигурация сервера включена /etc/scanbd/sane.d. Конфигурацию сервера необходимо скопировать туда /etc/sane.d(просто скопировать всю папку), а затем изменить, чтобы она действовала как сервер и общалась со сканером через usb, т. Е. Независимо от того, какой бэкэнд в действительности используется сканером. В /etc/scanbd/scanbd.confSANE_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

Похожие вопросы