LINUX.ORG.RU
ФорумAdmin

Настройка сетевого доступа к сканеру (saned)

 ,


0

1

Приветствую!

Как в новых версиях Ubuntu (>=22.04) настроить сетевой доступ к сканеру

Пакет sane-utils вроде содержит все необходимое, но служба не запускается:

systemctl status saned
● saned.service
   Loaded: masked (/dev/null; bad)
   Active: inactive (dead)

Хорошо, пробую исправить (наверное не правильно, но…)

rm /lib/systemd/system/saned.service
cp /lib/systemd/system/saned@.service /lib/systemd/system/saned.service
systemctl daemon-reload
systemctl start saned

в ответ:

бер 17 09:29:37 desktop-c007 systemd[1]: Started Scanner Service.
бер 17 09:29:37 desktop-c007 saned[15976]: saned (AF-indep+IPv6) from sane-backends 1.1.1-debian starting up
бер 17 09:29:37 desktop-c007 saned[15976]: check_host: getpeername failed: Socket operation on non-socket
бер 17 09:29:37 desktop-c007 saned[15976]: init: access by host [error] denied
бер 17 09:29:37 desktop-c007 saned[15976]: saned exiting
бер 17 09:29:37 desktop-c007 systemd[1]: saned.service: Deactivated successfully.

Хорошо, пробую следующее:

nano /etc/default/saned

# Defaults for the saned initscript, from sane-utils
# Set to the user saned should run as
#RUN_AS_USER=saned
RUN_AS_USER=root

Вывод аналогичный

Дополнительно:

netstat -lnp | grep 6566
tcp6       0      0 :::6566                 :::*                    LISTEN      1/init

Т.е. порт занят и служба, соответственно, не запускается

Подскажите направление поисков



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

Не надо делать закат солнца вручную

saned@.service - это шаблон. Чтобы его правильно включить, надо после @ указать какое-то имя. Конкретное значение завит от того, как в самом юните это подстановка используется.

В самом saned.service скорее всего в Exec стоит что-то типа /bin/true, и нужен подобный юнит или для единовременного управления всеми экземплярами saned@, или для использования вместо /etc/init.d/saned.

Надо смотреть их содержимое и принимать решение исходя из этого.

Делается через systemctl enable, а не ручным раскладыванием симлинков.

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

Это все теория, она мне известна

Мне помогли следующие правки:

в exec поменял:

ExecStart=/usr/sbin/saned

на

ExecStart=/usr/sbin/saned -l -d 3

И отключил Requires=saned.socket

Работает

И как правильно запускать указанный сервис? Вопрос остается отрытым (данный костыль - костыль)

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

Я тебе в самом первом посте написал, но ты продолжил гнуть свою линию.

Начни с основ. Прочитай про управление юнитами, про юниты-шаблоны, про внесение правки в юниты (systemctl edit).

В конце концов, не надо считать себя умнее создателей и сопровождающий дистрибутива.

https://www.freedesktop.org/software/systemd/man/latest/systemd.html

https://www.freedesktop.org/software/systemd/man/latest/systemctl.html

https://www.freedesktop.org/software/systemd/man/latest/systemd.unit.html

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

Юнит типа сокет слушает порт. При получении входящего коннекта запускает юнит типа сервис и передаёт ему сокет коннекта. Это обычная практика в systemd дистрах, запуск демонов при необходимости. Но ты своими правками всё поломал.

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

Уважаемые специалисты были правы, я - нет

Необходимо было включать именно saned.socket, а не saned.service.

Так же необходимо было для проверки статуса службы указывать её полное имя, а не просто saned (у меня постоянно показывало ошибку, просто saned подразумевал saned.service, а он запускался лишь во время обращения к порту).

Всем спасибо за разъяснения!

oleg_kravchenko
() автор топика