SANE 扫描、scanbd 按钮和服务权限

SANE 扫描、scanbd 按钮和服务权限

我整天都在努力完成这项工作。我快完成了,但还缺少一些东西。以下是目前为止的故事:

  • Debian Jessie 8.3 无头家庭服务器
  • SANE 通过 USB 全面支持 Canon MP140 MFP 扫描仪/打印机
  • SANE dll.conf 已配置并正常运行(除以下内容外,所有内容均已注释掉皮克斯马

scanimage -p --resolution 300 --format=tiff --mode Gray -x 210 -y 297 > test300.tiff ...以灰度扫描 A4 纸并将其保存为 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'

它似乎正在运行,但对按钮没​​有任何反应。


我尝试停止服务并以 root 身份启动 scanbd -而且它有效!

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它会恢复等待按钮按下或 sane-port 上出现更多网络流量。

为了使其工作,saned必须配置两次。
在同一台机器上同时配置为服务器和客户端。服务器部分在检测到网络流量时启动scanbd,如上文所述。

当您通过 启动扫描时scanimage,或scanbd检测到按钮按下时,客户端部分会手动启动。saned客户端应配置为连接到网络saned服务器(同一台机器,因此 localhost、127.0.0.1 或主机名、后端'') — 不是 USB — 因此避免与 发生冲突scanbdscanbd然后检测到端口 6566 上的某些网络流量并作为服务器启动saned,就像它真的是某些网络客户端一样。

客户端配置在 中,/etc/sane.d而服务器配置在 中/etc/scanbd/sane.d。必须从那里复制服务器配置/etc/sane.d(只需复制整个文件夹),然后修改为充当服务器并通过 usb 与扫描仪通信,即扫描仪实际使用的任何后端。SANE_CONFIG_DIR/etc/scanbd/scanbd.conf应指向saned服务器部分:/etc/scanbd/sane.d

编辑:此外,如果机器有防火墙,请打开端口 6566 并加载内核模块 nf_conntrack_sane:

sudo ufw allow 6566/tcp

sudo modprobe nf_conntrack_sane

如果有效,则添加nf_conntrack_sane/etc/modules

相关内容