Le Blog de C-quad

Partager un scanner sous Linux avec sane

Un des avantages de Linux c’est que beaucoup de choses fonctionnent sur le mode client serveur. Cette façon de faire rend beaucoup plus facile l’utilisation via le réseau. Nous allons voir ici comment partager un scanner (usb) sur le réseau.

Pré requis

Nous partons du principe que le scanner est fonctionnel et que le réseau entre les 2 ordinateurs fonctionne lui aussi correctement. Pour l’installation du scanner, voici un exemple d’installation de scanner Epson sous Linux

Configuration du client

L’accès au scanner se fait grâce à sane. Nous l’installons à partir du paquet sane-backends.

$ yum install sane-backends

Il est nécessaire d’installer un logiciel pour utiliser le scanner. Nous installerons donc gnome-scan ou xsane en fonction de vos préférences. gnome-scan est très simple et présente peu d’option, à la différence de xsane qui lui permettra de choisir plus précisément les options de numérisation.

$ yum install xsane

Pour que le client sache ou le scanner est situé, il est nécessaire de le lui spécifier dans le fichier de configuration /etc/sane.d/net.conf

## saned hosts
# Each line names a host to attach to.
# If you list "localhost" then your backends can be accessed either
# directly or through the net backend.  Going through the net backend
# may be necessary to access devices that need special privileges.
# localhost
192.168.0.4

Il n’y a rien de plus à faire coté client. Dans notre exemple, le serveur sur lequel est connecté le scanner possède l’ip 192.168.0.4. Il est possible de renseigner le nom du serveur, si celui-ci est correctement renseigné dans le dns ou dans /etc/hosts du client.

Configuration du serveur

Nous commençons par définir la liste des clients qui peuvent se connecter au serveur pour utiliser le scanner. Pour cela nous éditons le fichier /etc/sane.d/saned.conf

#
# saned.conf
#
# The contents of the saned.conf  file  is  a  list  of  host  names,  IP
# addresses or IP subnets (CIDR notation) that are permitted to use local
# SANE devices. IPv6 addresses must be enclosed in brackets,  and  should
# always  be specified in their compressed form.
#
# The hostname matching is not case-sensitive.
#
#scan-client.somedomain.firm
#192.168.0.1
#192.168.0.1/29
#[2001:7a8:185e::42:12]
#[2001:7a8:185e::42:12]/64
#
# NOTE: /etc/inetd.conf (or /etc/xinetd.conf) and
# /etc/services must also be properly configured to start
# the saned daemon as documented in saned(8), services(4)
# and inetd.conf(4) (or xinetd.conf(5)).
cquad
localhost
192.168.0.3

Nous ajoutons donc les ordinateurs qui peuvent se connecter. Dans notre exemple cquad.

Ajout de saned à xinetd

Il faut ensuite ajouter le service saned à xinetd afin qu’il soit lancé automatiquement.

Pour que saned soit lancé, nous ajoutons le fichier sane-port dans le répertoire /etc/xinetd.d. Le fichier sane-port contient les lignes suivantes :

service sane-port
{
disable = no
port = 6566
socket_type = stream
wait = no
user = root
group = root
server = /usr/sbin/saned
flags = IPv4
}

Il est ensuite nécessaire de redémarrer xinetd pour que les modifications soient prises en compte. Pour se faire nous faisons :

$ service xinetd restart

Vérification du scanner

Pour vérifier que le scanner est bien partagé, nous vérifions la commande scanimage -L sur le serveur qui liste les scanner connus :

$ scanimage -L
device `epkowa:interpreter:004:004' is a Epson Perfection V200 flatbed scanner
device `net:localhost:epkowa:interpreter:004:004' is a Epson Perfection V200 flatbed scanner
device `net:gericom:epkowa:interpreter:004:004' is a Epson Perfection V200 flatbed scanner

Le fait de trouver des lignes avec net:machine nous montre que le partage est effectif.

Nous allons maintenant faire de même sur le client :

$ scanimage -L
device `net:192.168.0.4:epkowa:interpreter:004:004' is a Epson Perfection V200 flatbed scanner

Attention : Pour que cela fonctionne, il faut que les noms de domaine soient définis dans /etc/hosts. Personnellement, je m’etais contenté de donner un nom aux machines sans leur donner d’extension et cela ne fonctionnait pas.

Voici un exemple de fichier /etc/hosts qui fonctionne :

192.168.0.4     gericom.localdomain     gericom
192.168.0.3     cquad.localdomain       cquad
127.0.0.1               localhost.localdomain localhost localhost
::1             localhost6.localdomain6 localhost6

Laisser un commentaire