私は一日中この仕事をしようとしています。もうすぐですが、まだ何かが足りません。これまでの話は次のとおりです。
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)
私はおそらくいくつかの明白な詳細を見落としていますが、それが何であるかを本当に理解することはできません。どんな助けでも大歓迎です。
私の最終的な目標は、スキャンボタンを機能させることでした。私がそれを理解するまでに、私はスキャンボタンが機能し、ネットワークスキャンも機能するようになりました。
私はそれを間違った方法で見ていました、そして結果としてそれを間違った方法で見ていました。
この作業を行うためのコマンドの正確なシーケンスを書き留めることができず、申し訳ありません。作業が完了するまでにかなり混乱してしまいました。しかし、私は少なくともそれの一般的な論理を助けることができることを願っています。
したがって、scanbd
(スキャナーボタンサービス)またはsaned
(スキャナーネットワークサーバーサービス)のいずれかがスキャナーにアクセスできますが、両方を同時にアクセスすることはできません。 scanbd
はボタンの状態を絶えず更新することでスキャナーをロックし、saned
はネットワークスキャナーとして使用するためにスキャナーをロックします。
それが機能する方法は、サービスとしてscanbd
のみを使用することです。scanbd
は、ボタンの状態を常に監視し、ボタンが押された場合に何らかのアクションを実行します。ただし、sane-port 6566(tcp)でリッスンすることもできます。トラフィックを検出すると、ボタンの監視を停止し、saned
サービスを開始して引き継ぎます。 saned
がネットワークスキャナーサーバーであることが完了すると、scanbd
はボタンが押されるか、正常なポートでさらにネットワークトラフィックが増えるのを待つために再開します。
これが機能するためには、saned
を2回構成する必要があります。
同じマシン上のサーバーとクライアントの両方。サーバー部分は、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
に追加します