Сканирование 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