LINUX.ORG.RU

Написать юнит для SANE в systemd

 , , ,


1

1

Привет, ЛОР!

Centos 7 amd64, локально подключенный SCX-3200

Я уже голову сломал, как мне запустить SANE чтобы оно сканер отдавало в локалку. После некоторых манипуляций добился, чтобы виделся сканер.

scanimage -L
device `xerox_mfp:libusb:001:002' is a Samsung Samsung SCX-3200 Series multi-function peripheral

И тут начинается самое интересное. как я понял из некоторых форумов, толкового юнита sane в centos 7 нынче нет.

Есть ман, в котором сказано так.

SYSTEMD CONFIGURATION
       for systemd we need to add 2 configuation files in /etc/systemd/system.

       The first file we need to add here is called saned.socket.  It shall have the following contents:

              [Unit]
              Description=saned incoming socket

              [Socket]
              ListenStream=6566
              Accept=yes
              MaxConnections=1

              [Install]
              WantedBy=sockets.target

       The second file to be added is saned@.service with the following contents:

              [Unit]
              Description=Scanner Service
              Requires=saned.socket

              [Service]
              ExecStart=/usr/sbin/saned
              User=saned
              Group=saned
              StandardInput=null
              StandardOutput=syslog
              StandardError=syslog
              # Environment=SANE_CONFIG_DIR=/etc/sane.d SANE_DEBUG_DLL=255

Есть баг в багзилле red hat, в котором помимо всего прочего есть указания для корректировки юнита (коммент 8).

В конечном итоге методом многочисленных экспериментов я собрал из двух примеров себе такой юнит

cat /etc/systemd/system/saned.socket

[Unit]
              Description=saned incoming socket

              [Socket]
              ListenStream=6566
              Accept=yes
              MaxConnections=3

              [Install]
              WantedBy=sockets.target
cat /etc/systemd/system/saned.service

 [Unit]
              Description=Scanner Service
              Requires=saned.socket

              [Service]
              ExecStart=/usr/sbin/saned
              User=saned
              Group=saned
              StandardInput=null
              StandardOutput=syslog
              StandardError=syslog
              Environment=SANE_CONFIG_DIR=/etc/sane.d
#             Environment=SANE_DEBUG_DLL=128 SANE_DEBUG_NET=128

Запускаю я # service saned start и потом вижу в # service saned status вот такое

Redirecting to /bin/systemctl status  saned.service
saned.service - Scanner Service
   Loaded: loaded (/etc/systemd/system/saned.service; static)
   Active: inactive (dead)

дек 05 21:51:37 maxim-server systemd[1]: Started Scanner Service.
дек 05 21:51:37 maxim-server saned[5814]: saned (AF-indep+IPv6) from sane-backends 1.0.24 starting up
дек 05 21:51:37 maxim-server saned[5814]: check_host: access by remote host: localhost
дек 05 21:51:57 maxim-server saned[5814]: init: bad status=22 or procnum=-1402437236
дек 05 21:55:00 maxim-server systemd[1]: Stopped Scanner Service.
дек 05 21:55:02 maxim-server systemd[1]: Starting Scanner Service...
дек 05 21:55:02 maxim-server systemd[1]: Started Scanner Service.
дек 05 21:55:02 maxim-server saned[5882]: saned (AF-indep+IPv6) from sane-backends 1.0.24 starting up
дек 05 21:55:02 maxim-server saned[5882]: check_host: access by remote host: localhost
дек 05 21:55:22 maxim-server saned[5882]: init: bad status=22 or procnum=1117462924
cat /etc/passwd | grep saned
saned:x:1001:1001::/dev/null:/bin/false

И нихрена не видит клиент расшареного сканера. Порты в файерволе на сервере открыл, в клиенте заполнил и /etc/sane.d/net.conf и /etc/sane.d/dll.conf и всё равно клиент сканера не видит.

Да и вообще центось странный предмет. вроде корпоративный стандарт де-факто, а документации толком нет, баг висит кучу времени.

в том же дебиане это всё делалось проще (правда без systemd) и хотя бы в блогах, но мануалы на каждый чих есть.

★★★★

Последнее исправление: kma21 (всего исправлений: 1)

На сервере расшарил с помощью sane сканер? Не знаю где это в центосе, вот пример https://help.ubuntu.com/community/ScanningHowTo

/etc/default/saned:

# Set to yes to start saned                                                     
RUN=yes



Set the subnet that will be able to see the scanner Edit /etc/sane.d/saned.conf to share the printer on your subnet:

192.168.1.0/24

На убунте давно и успешно шарю сканеры с помощью saned. Никакого специального systemd-юнита для этого не нужно - лишь бы saned был установлен, запущен, настроен на отдачу сканера в сеть, и пользователь saned был добавлен в нужные группы.

pod ★★
()
Последнее исправление: pod (всего исправлений: 1)
Ответ на: комментарий от pod

да на дебиане несколько лет назад я тоже нормально расшаривал.

все эти вики по иным дистрибутивам и ссылки на старые версии центоси я тоже видел. в 7-й центоси долбаный системД и несколько всё изменено. поэтому непонятно как всё это пускать.

kma21 ★★★★
() автор топика
Ответ на: комментарий от kma21

socket-сервис выкинуть, оставить только /etc/systemd/system/saned.service, сделать ему systemctl enable, systemctl start, посмотреть, слушает ли saned нужные порты: sudo ss -tulnp | grep saned

pod ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.