Fórumok
Sziasztok !
Van egy gépem amin F32 server edition fut. Csatlakozik hozzá egy szkenner amit hálózaton keresztül érnek el a felhasználók. A szerver időzítve működik automatikusan leáll illetve bekapcsol a megadott időpontban. Engedélyeztem a saned futtatását.
Ha a szerver üzemel, és későbbi időpontban kapcsolom be a szkennert akkor a saned nem érzékeli az eszközt és a kliensek nem tudnak dolgozni vele. Ha a szkenner be van kapcsolva és utána indul el a szerver akkor minden rendben van a kliensek is elérik a szkennert működik minden. Tudtok abban segíteni, hogyan tudom a beállítani a szervert, hogy a saned érzékelje az utólag bekapcsolt szkennert?
Hozzászólások
Nem lehet erre valami scriptet vagy unit file-t írni? Gondolom, valahonnan csak kiderül, hogy nincs scanner, és akkor mondjuk percenként restart a saned-nek.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
Ezzel próbálkoztam. A cron-ra bíztam a saned restartot.
Egy érdekes dolgot viszont találtam a sane-find-scanner futtatása után indítom a sane daemont akkor megtalálja a szkennert.
Ez nem valami USB-hw felismerési probléma lehet ?
Karesz
Letölthető háttérképek | Portréfotók
Milyen logok készülnek (a szerveren), amikor bekapcsolod a scannert?
Ugye fenn van a sane-backends-daemon csomag, és gondolom, a saned.socket triggereli a service-t? Mert ha a systemd-n kívül csinálod, akkor még a Selinux-szal is meggyűlhet a bajod, mindamellett, hogy a szolgáltatások függősége sem kezelődik.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
Szerintem minden fent van a mi kell
A SELinux meg nem fut.
Triggers-ben látni azt a kliens ip-t ami kapcsolódik a szerverhez, csak éppen nem működik :(
systemctl status saned.socket
● saned.socket - saned incoming socket
Loaded: loaded (/usr/lib/systemd/system/saned.socket; enabled; vendor preset: disabled)
Active: active (listening) since Fri 2020-10-23 19:30:55 CEST; 3min 3s ago
Triggers: ● saned@0-192.168.1.43:6566-192.168.1.200:57482.service
Listen: [::]:6566 (Stream)
Accepted: 1; Connected: 1;
Tasks: 0 (limit: 9298)
Memory: 88.0K
CPU: 1ms
CGroup: /system.slice/saned.socket
server systemd[1]: Listening on saned incoming socket.
Karesz
Letölthető háttérképek | Portréfotók
Az az érzésem, hogy a saned induláskor megnézi, milyen scannerei vannak, aztán ezt az állapotot ajánlja ki a klienseknek. Tehát gyanítom, az új scanner megjelenésekor kellene egy
systemctl restart saned.socket
parancs root joggal. Egyébként logokat néztél? Mond valami értelmeset arról, mi történik?
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
Azt találtam ki kínomban :( , hogy adtam a cron-nak egy
* * * * * sane-find-scanner
utasítást.
Nem valami elegáns, de mivel nincs állandóan használva szkenner és a franc sem tudja ki mikor használná a szerver futási ideje alatt... szóval jobb ötletem nem volt :(
De legalább műxik.
Karesz
Letölthető háttérképek | Portréfotók
Akkor ennél elegánsabb volna udev rule-ba írni, hogy ha a kernel felismeri az adott eszközt, akkor indítsa el a sane-find-scanner parancsot. Akkor nem pollingolnád, hanem eseményvezérelten akkor futna, amikor kell.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
Na ez nekem új terület utána kell olvassak. :(
Karesz
Letölthető háttérképek | Portréfotók
> Na ez nekem új terület utána kell olvassak. :(
A scanner bekapcsolása előtt futtasd root-ként az
udevadm monitor
parancsot. A scanner bekapcsolásakor kiírja, hogy az udev mit tesz. Ebből kiderül, hogy az udev-es rész rendben-e van. Ha igen, akkor máshol kell keresni a problémát.
Esetleg még egy gondolat: frissíts Fedora 33-ra, hátha megoldott a probléma.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
> Akkor ennél elegánsabb volna udev rule-ba írni,
Pontosan. De a szükséges udev rule a saned telepítésekor oda kellett volna kerüljön a helyére. Úgy általában, a udev rule-t igénylő szoftvereknek maguknak kell ezt intéznie.
OFF: pl. nálam a nut-server ilyen, és az tartalmazza az usb portos ups-ekhez szükséges .rules fájlt.
Sajna nincs ott. Próbáltam reinstalt, egy korábbi verziót, de nem jelenik meg a fájl a /etc/udev/rules.d -ban.
Esetleg tudható hogyan hozható léte egy ilyen fájl ?
Olvastam doksikat, de még nem jutottam sikerre :(
Karesz
Letölthető háttérképek | Portréfotók
Ahogy nézem az udev rule-okat, van benne olyan, hogy RUN.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
A sokadik vezérhangyát adtad. :) Találtam egy dokumentumot a weben amiben azt taglalják, hogy egy bedugott USB eszköz érzékelésekor lefusson egy script. Remek, ha egy scriptet eltud indítani akkor egy programot is :))
Szóval létrehoztam egy fájlt 90-sane-find-scanner.rules néven az /etc/udev/rules.d/ -ben
Tartalma: ACTION=="add", RUN+="/bin/sane-find-scanner"
Eddig kétszer próbáltam előidézni a problémás helyzetet. Mind két alkalommal simán vette az akadályt ;)
Egy dolog aggaszt azért. Nem okozhat esetleg problémát, hogy egy másik USB eszköz érzékelését félreviszi? Bár ez egy szerver, amibe nagyon nem dugdosunk USB-eszközöket, talán pendrive-ot néha.
Karesz
Letölthető háttérképek | Portréfotók
Ez ugyan nem scanner, de nézd meg ezt a két sort:
Szerintem az ATTR egy attribútum filter. Tehát ha ATTR{idProduct}=="1234", ATTR{idVendor}=="abcd" formában a helyes számokkal filterezel, akkor csak a scannered bedugására fog triggerelni. A vendor és product id-t pedig le tudod kérdezni bedugott scannernél az lsusb paranccsal.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
> nem jelenik meg a fájl a /etc/udev/rules.d -ban.
find /lib/udev -name '*sane*'
Erre 2 találatnak kell lenni, egy a hwdb.d, egy a rules.d alatt.