[РЕШЕНО] МФУ Kyocera Color M5521cdw сканирование через сеть

wau
к авахи-манагеру никакого результат не дает, тишина.
Может из за того что прописали левые сервисы. По идеи должно быть видно печать и сканер
Левые? отнюдь. Тот от авахи не запускался, там строка exec false, запуск православного ничего не изменил. Горюя даже перезагрузился в ядро linux (ранее был в zen) - бестолку, тишина.
Вообщем то Avahi не обязательный сервис, все можно настроить и без него. Что он дает? - удобство … но это спорно - большинство относится к этому сервису отрицательно.
Грубо говоря, Avahi упрощает работу сервисов/устройств в локальной сети - все программы, работающие по локальной сети, будут находить/видеть друг друга сами.
Но для работы Avahi не достаточно просто запустить демон Avahi - требуется установка nss-mdns, редактирование конфигов, создание группы и др. Кроме того есть нюансы по работе.
Если есть желание запустить Avahi, рекомендую Wiki.
Ошибки не исчезают с опытом - они просто умнеют
vasek
Но для работы Avahi не достаточно просто запустить демон Avahi - требуется установка nss-mdns, редактирование конфигов, создание группы и др. Кроме того есть нюансы по работе.
я может ошибаюсь, но как раз таки для работы avahi достаточно просто работы сервеса, к устройству можно подключиться и не зная его hostname. (по крайней мере у меня avachi находит pulse и mpd в локальной сети)
а вот nss-mdns как раз таки позволяет не заморачиваться с локальным dns, и обращаться к устройствам по hostname.
Ошибки в тексте-неповторимый стиль автора©
коллеги, да ну его, этот авахи - ранее, когда был сканер Эпсон, и без него все работало. Обычно у меня авахи, как и самба, задушены напрочь. Где искать логи, или как включить эти логи сане?
indeviral, как то пробовал освоить этот Avahi, но так до конца и не освоил, что то он мне не понравился ... так что знаю его плохо.

wau
Где искать логи, или как включить эти логи сане?
Логи нужно добывать, самое простое запуск утилиты через strace. Если нужны логи юнита, то можно и в нем использовать strace. Некоторые утилиты имеют опцию debug, нужно смотреть.
Ошибки не исчезают с опытом - они просто умнеют
В очередной раз спасибо за наводку - впервые в жизни пользую strace. Вывод длиннющий, на 65т строк. Искомые обращения к адресу есть, как я понимаю прочтенное - отваливается по таймауту, а несколько выше неожиданное про ненайденные файлы, да что там файлы, у меня и такого директория нет /var/net-snmp/hosts/, да и вообще /var/net-snmp/ вцелом пуст, но пакет net-snmp стоит -


stat("/etc/snmp", 0x7ffdf0c9cf20)       = -1 ENOENT (Нет такого файла или каталога)
stat("/usr/share/snmp", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
openat(AT_FDCWD, "/usr/share/snmp/snmp.conf", O_RDONLY) = -1 ENOENT (Нет такого файла или каталога)
openat(AT_FDCWD, "/usr/share/snmp/snmp.local.conf", O_RDONLY) = -1 ENOENT (Нет такого файла или каталога)
stat("/usr/lib/snmp", 0x7ffdf0c9cf20)   = -1 ENOENT (Нет такого файла или каталога)
stat("/home/memfis/.snmp", 0x7ffdf0c9cf20) = -1 ENOENT (Нет такого файла или каталога)
stat("/var/net-snmp", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0
stat("/var/net-snmp/snmp.0.conf", 0x7ffdf0c9cf20) = -1 EACCES (Отказано в доступе)
openat(AT_FDCWD, "/var/net-snmp/snmp.conf", O_RDONLY) = -1 EACCES (Отказано в доступе)
openat(AT_FDCWD, "/var/net-snmp/snmp.local.conf", O_RDONLY) = -1 EACCES (Отказано в доступе)
stat("/etc/snmp", 0x7ffdf0c9cf20)       = -1 ENOENT (Нет такого файла или каталога)
stat("/usr/share/snmp", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
openat(AT_FDCWD, "/usr/share/snmp/sane-magicolor-backend.conf", O_RDONLY) = -1 ENOENT (Нет такого файла или каталога)
openat(AT_FDCWD, "/usr/share/snmp/sane-magicolor-backend.local.conf", O_RDONLY) = -1 ENOENT (Нет такого файла или каталога)
stat("/usr/lib/snmp", 0x7ffdf0c9cf20)   = -1 ENOENT (Нет такого файла или каталога)
stat("/home/memfis/.snmp", 0x7ffdf0c9cf20) = -1 ENOENT (Нет такого файла или каталога)
stat("/var/net-snmp", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0
stat("/var/net-snmp/sane-magicolor-backend.0.conf", 0x7ffdf0c9cf20) = -1 EACCES (Отказано в доступе)
openat(AT_FDCWD, "/var/net-snmp/sane-magicolor-backend.conf", O_RDONLY) = -1 EACCES (Отказано в доступе)
openat(AT_FDCWD, "/var/net-snmp/sane-magicolor-backend.local.conf", O_RDONLY) = -1 EACCES (Отказано в доступе)
stat("/etc/snmp", 0x7ffdf0c9ca00)       = -1 ENOENT (Нет такого файла или каталога)
stat("/usr/share/snmp", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
openat(AT_FDCWD, "/usr/share/snmp/hosts/255.255.255.255.conf", O_RDONLY) = -1 ENOENT (Нет такого файла или каталога)
openat(AT_FDCWD, "/usr/share/snmp/hosts/255.255.255.255.local.conf", O_RDONLY) = -1 ENOENT (Нет такого файла или каталога)
stat("/usr/lib/snmp", 0x7ffdf0c9ca00)   = -1 ENOENT (Нет такого файла или каталога)
stat("/home/memfis/.snmp", 0x7ffdf0c9ca00) = -1 ENOENT (Нет такого файла или каталога)
stat("/var/net-snmp", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0
stat("/var/net-snmp/hosts/255.255.255.255.0.conf", 0x7ffdf0c9ca00) = -1 EACCES (Отказано в доступе)
openat(AT_FDCWD, "/var/net-snmp/hosts/255.255.255.255.conf", O_RDONLY) = -1 EACCES (Отказано в доступе)
openat(AT_FDCWD, "/var/net-snmp/hosts/255.255.255.255.local.conf", O_RDONLY) = -1 EACCES (Отказано в доступе)
socket(AF_INET, SOCK_DGRAM, IPPROTO_IP) = 60
uname({sysname="Linux", nodename="wau", ...}) = 0
getsockopt(60, SOL_SOCKET, SO_SNDBUF, [212992], [4]) = 0
getsockopt(60, SOL_SOCKET, SO_RCVBUF, [212992], [4]) = 0
setsockopt(60, SOL_SOCKET, SO_BROADCAST, [1], 4) = 0
sendmsg(60, {msg_name={sa_family=AF_INET, sin_port=htons(161), sin_addr=inet_addr("255.255.255.255")}, msg_namelen=16, msg_iov=[{iov_base="0G\2\1\1\4\6public\240:\2\4s/<\223\2\1\0\2\1\0000,0\f\6"..., iov_len=73}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, MSG_DONTWAIT|MSG_NOSIGNAL) = 73
select(61, [60], NULL, NULL, {tv_sec=0, tv_usec=125000}) = 0 (Timeout)
select(61, [60], NULL, NULL, {tv_sec=0, tv_usec=125000}) = 0 (Timeout)
select(61, [60], NULL, NULL, {tv_sec=0, tv_usec=125000}) = 1 (in [60], left {tv_sec=0, tv_usec=75095})
brk(0x560a8eb58000)                     = 0x560a8eb58000
recvmsg(60, {msg_name={sa_family=AF_INET, sin_port=htons(161), sin_addr=inet_addr("192.168.1.100")}, msg_namelen=28->16, msg_iov=[{iov_base="0y\2\1\1\4\6public\242l\2\4s/<\223\2\1\0\2\1\0000^06\6"..., iov_len=65536}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, MSG_DONTWAIT) = 123
getsockname(60, {sa_family=AF_INET, sin_port=htons(38776), sin_addr=inet_addr("0.0.0.0")}, [28->16]) = 0
brk(0x560a8eb48000)                     = 0x560a8eb48000
select(61, [60], NULL, NULL, {tv_sec=0, tv_usec=125000}) = 0 (Timeout)
select(61, [60], NULL, NULL, {tv_sec=0, tv_usec=125000}) = 0 (Timeout)
select(61, [60], NULL, NULL, {tv_sec=0, tv_usec=125000}) = 0 (Timeout)
select(61, [60], NULL, NULL, {tv_sec=0, tv_usec=125000}) = 0 (Timeout)
select(61, [60], NULL, NULL, {tv_sec=0, tv_usec=125000}) = 0 (Timeout)
select(61, [60], NULL, NULL, {tv_sec=0, tv_usec=68731}) = 0 (Timeout)
sendmsg(60, {msg_name={sa_family=AF_INET, sin_port=htons(161), sin_addr=inet_addr("255.255.255.255")}, msg_namelen=16, msg_iov=[{iov_base="0G\2\1\1\4\6public\240:\2\4s/<\223\2\1\0\2\1\0000,0\f\6"..., iov_len=73}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, MSG_DONTWAIT|MSG_NOSIGNAL) = 73
select(61, [60], NULL, NULL, {tv_sec=0, tv_usec=125000}) = 0 (Timeout)
select(61, [60], NULL, NULL, {tv_sec=0, tv_usec=125000}) = 1 (in [60], left {tv_sec=0, tv_usec=33882})
recvmsg(60, {msg_name={sa_family=AF_INET, sin_port=htons(161), sin_addr=inet_addr("192.168.1.100")}, msg_namelen=28->16, msg_iov=[{iov_base="0y\2\1\1\4\6public\242l\2\4s/<\223\2\1\0\2\1\0000^06\6"..., iov_len=65536}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, MSG_DONTWAIT) = 123
getsockname(60, {sa_family=AF_INET, sin_port=htons(38776), sin_addr=inet_addr("0.0.0.0")}, [28->16]) = 0
select(61, [60], NULL, NULL, {tv_sec=0, tv_usec=125000}) = 0 (Timeout)
select(61, [60], NULL, NULL, {tv_sec=0, tv_usec=125000}) = 0 (Timeout)
select(61, [60], NULL, NULL, {tv_sec=0, tv_usec=125000}) = 0 (Timeout)
close(60)                               = 0
read(59, "", 4096)                      = 0
close(59)                               = 0
вернулся к вопрос о разном содержании пакета дров, распространяемых изготовителем для deb и rpm. Сперва я распаковал содержимое пакета rpm и распихал по соответствующим директориям, выставив права на файлы. Не прокатило. Затем через debtap сконвертировал dep пакет в xz - не прокатило и это стало явно видно при контрольной установке этого комплекта в чистый жонский ноутбук.
Вопрос - утилита для конвертации rpm в xz, аналогичная debtap, не родилась ли?

И что еще любопфтно - вот удаляю я отовсюду (комментом) адрес сканера, а трассировщик все равно показывает

recvmsg(60, {msg_name={sa_family=AF_INET, sin_port=htons(161), sin_addr=inet_addr("192.168.1.100")}, msg_namelen=28->16, msg_iov=[{iov_base="0y\2\1\1\4\6public\242l\2\4N\316)\30\2\1\0\2\1\0000^06\6"..., iov_len=65536}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, MSG_DONTWAIT) = 123

Пошел дельше - напрочь вычистил из всех конфигов даже закомменченные адреса сервера, греп это подтверждает , а трассировщик все равно показывает два обращения к адресу. Тогда в net.conf дал адрес х.102, а в киосера_дев адрес 101 и надо же, трассировщик показал, что узел 102 ищем, а о 101 молчок. Это уже довод, т.е. сане не читает подсунутый конфиг киосеры из пакета дров. Как заставить?

Прописал файлы конфигов в dll.conf, результата ноль.
wau
Вывод длиннющий, на 65т строк.
Для сокращения вывода нужно фильтровать вывод, точнее использовать нужные опции, например, выводить только системные вызовы, имеющие отношение только к открытию файла или чтению или доступу или все, что имеет отношение к файлу или только сетевые (это придет с опытом - литературы много, в том числе и man).

wau
а несколько выше неожиданное про ненайденные файлы, да что там файлы, у меня и такого директория нет /var/net-snmp/hosts/, да и вообще /var/net-snmp/ вцелом пуст, но пакет net-snmp стоит
Это не обязательно ошибка, в програх часто заложен поиск/перебор разных файлов пока не найдется один из нужных (как правило, если не находится нужный файл, то прога завершает свою работу, а потому нужно смотреть конкретно).
Пример, запускаю рабочий скрипт (аналог консольного DM, меню загрузки), фильтрую по открытию файлов
strace -f -e trace=openat ~/wm
openat(AT_FDCWD, "/usr/lib/libswmhack.so.0.0", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
………
openat(AT_FDCWD, "/usr/lib/gconv/gconv-modules.cache", O_RDONLY) = -1 ENOENT (Нет такого файла или каталога)
openat(AT_FDCWD, "/usr/lib/gconv/gconv-modules", O_RDONLY|O_CLOEXEC) = 3
……….
и видим, что ищется файл /usr/lib/gconv/gconv-modules.cache, а его нет и переходит к другому, похожему, файлу /usr/lib/gconv/gconv-modules, который имеется

wau
… отваливается по таймауту
Самое противное для анализа, очень трудно понять (особенно нам, кто не так хорошо знаком с программированием) . И обычно нужно лезти в документацию по описанию системных вызовов и лучше в расширенное описание, например, для select

PS - и желательно использовать опцию f - возможно там что то будет дополнительно
f -  позволяет трассировать дочерние процессы по мере их появления

EDIT 1 - перед таймаут был вызов sendmsg (отправляет сообщения в сокет), все прошло успешно (отправлено 73 символа ... неплохо бы их и прочитать) ... а вот какой сокет это сообщение принял, не понятно, похоже нужно смотреть дочерние процессы ...
Ошибки не исчезают с опытом - они просто умнеют
Устал, однако. Что сделано -
1. запихнуты вручную конфиги из рпм пакета (он сильно отличается от деб), библиотеки тоже, права на них выровнены со соседними
2. в файл /etc/sane.d/ net.conf прописан адрес 102, в файл kyocera_de...conf адрес 103, все конфиги киосеры также засунуты в директорий dll.d, где в конфиг киосеры вписан адрес 101, в файл dll.conf поименно вписаны имена всех киосеровских конфигов (деб пакет прописал туда только свои 2 из возможных 5).
запускаем strace -o log2 -f scanimage -L

и видим -
упоминаний незаявленного адреса 100 2 шт -

59612 recvmsg(60, {msg_name={sa_family=AF_INET, sin_port=htons(161), sin_addr=inet_addr("192.168.1.100")}, msg_namelen=28->16, msg_iov=[{iov_base="0y\2\1\1\4\6public\242l\2\4O=S\201\2\1\0\2\1\0000^06\6"..., iov_len=65536}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, MSG_DONTWAIT) = 123

упоминаний адреса 101 одна штука -

59612 openat(AT_FDCWD, "/usr/lib/sane/libsane-192.168.1.101.so.1", O_RDONLY <unfinished ...>
59616 poll([{fd=131, events=POLLIN}, {fd=133, events=POLLIN}], 2, -1 <unfinished ...>
59612 <... openat resumed>)             = -1 ENOENT (Нет такого файла или каталога)

упоминаний адреса 102 одна штука, правильное упоминание -
59662 connect(134, {sa_family=AF_INET, sin_port=htons(6566), sin_addr=inet_addr("192.168.1.102")}, 16 <unfinished ...>
59664 poll([{fd=131, events=POLLIN}, {fd=133, events=POLLIN}], 2, -1 <unfinished ...>
59662 <... connect resumed>)            = -1 EHOSTUNREACH (Нет маршрута до узла)

упоминаний адреса 103 ноль штук

Выводы - штатно размещенный конфиг не считывается, подсунутый в dll.d/ не воспринимается как сетевой адрес, т.е. туда его и не следовало совать (пробовал в порядке бреда, сознательно вопреки описанию dll.conf)

В dll.conf имена прописывал по аналогии с другими -

kyocera
kyocera_gdi_a3
kyocera_devices
kyocera_wc3
 
Зарегистрироваться или войдите чтобы оставить сообщение.