Ceci est une ancienne révision du document !



Utiliser un Scanner en réseau

Cette documentation détaille la méthode d'installation d'un scanner relié à un serveur en réseau. La dernière rubrique précise le cas d'un scanner avec sortie réseau.

On propose l'utilisation du logiciel xSane qui est une interface graphique pour scanner.

  • Votre scanner fonctionne sur la machine (sous ubuntu que nous appellerons serveur) sur laquelle il est connecté.
  • Être un administrateur système (par défaut sur l'utilisateur principal, sinon voir cette page).
Le serveur est la machine sur laquelle le scanner est connecté.

METHODE 1 : Ubuntu 12.04 et versions suivantes

Dans cette configuration, l'ordinateur est équipé d'un scanner connecté par USB ou port parallèle.

Assurez-vous que votre scanner est installé et fonctionne correctement sur l'ordinateur serveur (c'est à dire l'ordinateur auquel le scanner est physiquement attaché). Testez d'abord sur cette machine avant de tenter de partager le scanner sur le réseau.

Installer sur l’ordinateur serveur le paquet sane ou à l'aide d'un terminal exécutez la commande suivante :

sudo apt-get install sane

Réglez sane pour qu'il se lance automatiquement. Modifier le fichier /etc/default/saned comme il suit :

# Set to yes to start saned                                                     
RUN=yes
Vous devez être root pour éditer ce fichier (utilisation de sudo)

Régler le sous-réseau qui sera en mesure d'identifier le scanner. Editer le fichier /etc/sane.d/saned.conf pour partager l'imprimante sur votre réseau :

192.168.1.0/24
Adapter l'IP selon votre plage d'adresses utilisées dans votre réseau.
/24 signifie de partager avec tout le monde dans xxx.xxx.xxx.0 à 255.

Configuration de l'utilisateur

Dans certains cas, les autorisations doivent être réglées. Par exemple pour mon scanner HP, l'utilisateur saned doit être inséré dans le groupe lp. Pour le faire ouvrez un terminal et entrer cette commande :

sudo adduser saned lp

Pour vérifier que l'utilisateur a les autorisations nécessaires pour accéder au périphérique scanner, exécutez les commandes suivantes :

sudo -s
su -s /bin/bash saned
scanimage -L

Par conséquent, vous devriez voir un périphérique identifié, par exemple :

device `hpaio:/usb/Officejet_6600?serial=CN1CF190F405RN' is a Hewlett-Packard Officejet_6600 all-in-one

Vous pouvez maintenant passer à la configuration du client.

METHODE 2 : Ubuntu 9.04 et versions suivantes

FIXME Cette méthode ne fonctionne apparemment pas. Si elle fonctionne, ou si ce paragraphe est incomplet, merci de bien vouloir apporter les modifications nécessaires. En effet selon ce tuto https://help.ubuntu.com/community/ScanningHowTo, il y d'autres étapes de configuration qui font appel à inetd (qui a été remplacé par xinetd), et au compte root pour avoir accès au scanner ce qui est déconseillé …

Jaunty fournit désormais un démon complet pour saned. Il faut installer le paquet sane-utils, éditer le fichier /etc/default/saned en tant qu'utilisateur root et mettre :

RUN=yes

RUN_AS_USER=saned
FIXME Selon https://help.ubuntu.com/community/ScanningHowTo, ce serait RUN_AS_USER=root

Le fichier est bien commenté. Bien entendu l'utilisateur saned doit exister et avoir les droits sur le scanner (faire partie du groupe propriétaire du scanner ou faire partie du groupe lp).

FIXME Il n'existe plus de groupe scanner sous jaunty / Karmic koala. Le créer ne sert à rien. C'est au parametrage de UDEV, qu'en général on règle le groupe du scanner. Sur Karmic, c'est "saned"

METHODE 3 : toutes versions

Aussi valable pour ceux chez qui la méthode 1 ne fonctionne pas.

Sur le SERVEUR

Il faut installer le paquet sane-utils, nécessaire au bon fonctionnement de la mise en réseau.

Étape S1 : Adresses IP autorisées à se connecter

Il faut ensuite éditer le fichier /etc/sane.d/saned.conf.

Et y ajouter la ou les adresses IP ou le nom des machines qui se serviront du scanner. Il est aussi possible d'y indiquer un réseau complet en donnant son adresse suivi du nombre de bits de son masque de sous-réseau :

192.168.0.5 #ip_machine - On n'autorise que la machine 192.168.0.5
192.168.0.0/24 #adresse_reseau/bits_masque - On autorise tout le réseau 192.168.0.*
Étape S2 : Module du scanner

Vérifier dans /etc/sane.d/dll.conf que le module du scanner est présent.

Par exemple pour un scanner Canon de la série Pixma, la ligne pixma est bien présente par défaut.

Note: l'activation du module net n'est pas utile sur le serveur, sauf si vous voulez permettre à ce noeud server de ré-exporter d'autres scanners sane distants (dont les adresses IP sont déclarées dans /etc/sane.d/net.conf).

Étape S3 : Nom du port utilisé

Il est vital de déterminer quel est le nom du port logiciel qui va être utilisé. En effet, ce nom peut changer suivant les cas.

Faîtes un :

cat /etc/services|grep san

Cette commande vous renverra toutes les lignes du fichier de définition des services contenant "san". Normalement la ligne de saned est dedans. Elle doit normalement correspondre au numero 6566.

sane-port     6566/tcp        sane saned      # SANE network scanner daemon

En particulier, vérifier qu'elle commence bien par "sane-port", et non pas par "sane", ce qui peut être le cas si le système est le fruit de (très) vielles mises à jour.

Étape S4 FACULTATIF : Imposer un mot de passe aux utilisateurs qui se connecteront
Attention, le scanner doit être connecté et sous tension quand vous executez "scanimage". De plus cette sommande est fournie par le paquet "sane-utils".

Déterminer le nom du scanner :

  $ scanimage -L

donne

  device `pixma:04A91709_B10A23' is a CANON Canon PIXMA MP150 multi-function peripheral

Donc le nom est : pixma.

Créer ensuite /etc/sane.d/saned.users pour ne lister que les utilisateurs autorisés à se connecter et leur affecter un mot de passe. Il faut donc créer pour chaque utilisateur une ligne du type :

NOMDUTILISATEUR:MOTDEPASSE:SCANNER

où SCANNER est le nom du scanner qui a été donné par la commande précédente.

Étape S5 : Configuration et lancement du démon

Nous devons ensuite régler le programme qui gérera le serveur de scanner. Sous Ubuntu, ce programme par défaut est maintenant xinetd, mais vous pouvez le remplacer par inetd.

S5_1 : Avec xinetd

S5_1_a : En utilisant le compte root (plus facile mais moins sécurisé)

Il faut installer le paquet xinetd, nécessaire au bon fonctionnement de la mise en réseau.

Créez le fichier /etc/xinetd.d/sane-port et y ajouter les lignes suivantes,

service sane-port
{
        id              = saned-stream
        socket_type     = stream
        server          = /usr/sbin/saned
        protocol        = tcp
        user            = root
        group           = root
        wait            = no
}

Encore une fois, la concordance avec le nom du port est très importante !

Pour finir, redémarrez le service xinetd en tapant dans terminal :

sudo /etc/init.d/xinetd restart

S5_1_b : Sans utiliser le compte root

Pour avoir un autre utilisateur du scanneur que root, il faut modifier d'une part les règles udev et d'autre part le service réseau xinet.d :

Créez le fichier /etc/xinetd.d/sane-port et y ajouter les lignes suivantes :

service sane-port
{
        id              = saned-stream
        socket_type     = stream
        server          = /usr/sbin/saned
        protocol        = tcp
        user            = saned
        group           = saned
        wait            = no
}

Créez le fichier relatif au scanner usb /etc/udev/rules.d/40-scanner-permissions.rules. Dans ce fichier, Ajoutez les lignes suivantes :

# usb scanner
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE:="0666", GROUP:="saned", OWNER:="saned"
SUBSYSTEM=="usb_device",MODE:="0666"
Il se peut que le fichier existe déjà ou qu'un fichier de nom légèrement différent contenant scanner existe déjà (le nom n'est pas important en réalité…). Dans les deux cas, il suffit de modifier ce fichier.
Le nom d'utilisateur est bien saned, et pas celui l'utilisateur de la machine.

Puis redémarrez le service udev dans un terminal :

sudo /etc/init.d/udev restart

Pour finir, redémarrez le service xinetd en tapant dans un terminal :

sudo /etc/init.d/xinetd restart

S5_2 : Avec inetd

Obsolète : utiliser xinetd

Il faut installer le paquet inetutils-inetd, nécessaire au bon fonctionnement de la mise en réseau.

Éditez le fichier /etc/inetd.conf.

et y ajouter la ligne suivante,

saned stream tcp nowait saned /usr/sbin/saned saned

Le premier terme de la ligne précédente renvoie au nom du port, que nous avons déterminé au dessus. La concordance est très importante.

Pour finir, redémarrez les services en tapant dans un terminal :

sudo /etc/init.d/inetutils-inetd restart

Étape S6
Si vous utilisez ufw qui ne ferme pas les ports en entrée par défaut, cette étape est inutile.

Si avez par défaut fermé les ports en entrée au niveau du pare-feu sur le serveur, il faut veiller à ouvrir les ports 6566, 45745 et 47342 en entrée.

l'ouverture du port 6566 semble indispensable puisque le serveur l'emploi par defaut mais rien ne justifie l'ouverture des ports 45745 et 47342. Il serait bien que l'auteur justifie ce point

Sur un client Linux

Le client est la machine qui se connectera sur le scanner distant.

Commencer par installez le paquet xsane. xSane (commande xsane), est le logiciel qui vous permettra d'accéder au scanner distant. Vous pouvez également installer un autre logiciel de scanner (voir la page scanner).

Le logiciel skanlite ne fonctionne pas en tant que client saned pour l'instant. L'auteur de l'article a écrit au développeur du logiciel, mais celui-ci ne sait que faire. L'auteur suppose que la librairie libksan n'est pas prévue pour cela.
Étape C1 : Adresse IP du poste auquel le scanner est connecté

Éditez le fichier /etc/sane.d/net.conf et y ajouter l'adresse IP ou le nom du serveur, par exemple :

192.168.0.111

On peut aussi préciser un temps maximal de tentative de connection en décommentant la ligne :

connect_timeout = 60
Étape C2 : Activer le module réseau pour pouvoir accéder à un scanner distant

Vérifier dans /etc/sane.d/dll.conf que le module net est présent (et non commenté).

Sur un client Windows®

Il existe une version de Sane pour Windows. Vous pouvez l'utiliser en lieu et place des pilotes classiques de votre scanner. Vous pouvez donc l'utiliser, que votre scanner soit en réseau soit en local ; et vous pouvez même monter le serveur de scanner sur Windows, ce qui est quand même un comble !

Vous pouvez soit utiliser Sane pour Windows, soit Sanetwain (l'une ou l'autre méthode au choix).

L'archive zip de Sane se trouve sur un de ces miroirs : http://www.xsane.org/xsane-download.html. Le logiciel s'installe en copiant le dossier Sane à la racine de « C:\ ».

Ici, on veut installer un client Sane. Donc, il faut éditer le fichier C:\sane\etc\sane.d\net.conf, et ajouter l'adresse IP du serveur. Il faut également éditer le fichier C:\sane\etc\sane.d\dll.conf et mettre une ligne "net". Vous remarquerez que c'est à peu près la même démarche que sous Linux. L'avantage de cette méthode, c'est que vous pouvez configurer un client, puis copier le dossier « C:\Sane » sur les autres postes Windows et cela fonctionnera !

SaneTwain s'installe avec un installeur standard.

http://sanetwain.ozuzo.net/downloads/sanetwain129.zip

Il va créer un dossier de programme classique. Installez-le. Dans la boite de dialogue qui va s'ouvrir, mettez l'adresse IP du serveur dans « hostname ».

Vous pouvez aussi mettre le nom du serveur, mais il faut pour cela que windows connaisse cet alias. Il y a un fichier « hosts » pour cela, comme sous Linux. Cherchez-le avec la commande « Chercher un fichier »1).
Dans les deux cas (Sane et Sanetwain), il faut s'assurer que le serveur ait bien dans son fichier « /etc/sane.d/saned.conf » l'adresse IP du client Windows ou son alias clairement identifié ! L'auteur n'est pas parvenu à le configurer avec le nom du PC. Il faut donc soit connaitre l'adresse IP de Windows, soit se débrouiller pour que Linux la connaisse (avec une astuce sur votre DNS perso peut-être ou un alias dans le fichier « /etc/hosts »).

P1) On peut commencer par tester si le scanner peut être déja utilisé depuis le serveur.

Le serveur jouera donc aussi le rôle de client.

Pour cela, sur le serveur, éditer /etc/sane.d/net.conf et :

  • Décommenter la ligne connect_timeout ce qui donne
    connect_timeout = 60
  • ajouter à la fin
    localhost

Essayer de scanner en choisissant le scanner désigné par net. Si ça fonctionne, la configuration du serveur est sans doute bonne … c'est que l'ordinateur client n'arrive pas à se connecter : voir notamment P4

P2) Essayer d'imposer un nom d'utilisateur et un mot de passe conformément au point S4.

P3) Sur le serveur, vérifier que l'utilisateur courant du serveur appartient au groupe saned.

P4) Désactiver temporairement le pare feu en entrée si vous avez vous même fermé des ports (ce n'est pas le cas par défaut)

Vous pouvez annuler les modifications faites aux lignes ci-dessus.

Toutefois, même si vous n'utilisez plus de scanner en réseau, toutes les modifications que vous avez pu apporter ne compromettent en rien le système. Elles seront annulées à la prochaine installation complète d'une nouvelle version d'Ubuntu.

  • N'oubliez pas d'ouvrir le port 6566 en TCP sur le serveur, si vous y avez installé un pare-feu.
  • Vérifier que le paquet sane-utils est bien installé sur le serveur.
  • Chez moi, l'utilisateur saned avait « /bin/false » comme shell (donc pas de shell). J'ai remplacé par « /bin/sh » dans « /etc/passwd », et depuis plus de problèmes avec xinet.d.
  • Pour ma part j'ai du mettre root root à la place de sane saned dans /etc/services

Le plus simple est de configurer son imprimante avec une adresse IP statique, notée 192.168.X.Y dans la suite.

FIXME : Il faut avoir le driver du scanner, qui est peut être le même que celui de l'imprimante ?

Ensuite if faut rajouter dans le fichier /etc/sane.d/xerox_mfp.conf la ligne:

 tcp 192.168.X.Y
Il est possible d'ajouter l'adresse IP statique de l'imprimante dans le fichier /etc/hosts. Exemple :
 192.168.X.Y    nom_de_l_imprimante 

Cette manipulation évite de mémoriser l'adresse IP, et est vraie pour n'importe quelle machine IP.


Contributeurs : yeffries,tshirtman, Fabien26, Ner0lph, stephaneguedon, claudiux, andso, Olivier V, mario_26, lousticator


1)
Sous Windows XP, il est situé dans « C:\WINDOWS\system32\drivers\etc\ ».
  • tutoriel/utiliser_un_scanner_en_reseau.1395489605.txt.gz
  • Dernière modification: Le 22/03/2014, 13:00
  • par lousticator