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 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 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).

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 2 : 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, et que qu'une ligne net est présente.

A vérifier si c'est vraiment utile. Sur Karmic: non

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

É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 (plus sécurisé mais méthode non confirmée)

Pour avoir un autre utilisateur du scanneur que root, il faut modifier les règles udev et le service réseau xinet.d : Modifiez le fichier /etc/xinetd.d/sane-port pour :

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

ainsi que le fichier relatif au scanner usb /etc/udev/rules.d/40-scanner-permissions.rules (Il se peut que le nom soit différent suivant le type d'installation. Le nom n'est pas important en réalité…). Dans ce fichier, nous rajoutons l'utilisateur saned et le group saned :

# usb scanner
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE:="0666", GROUP:="saned", OWNER:="saned"
SUBSYSTEM=="usb_device",MODE:="0666"
FIXME Le fichier /etc/udev/rules.d/40-scanner-permissions.rules n'existe pas sous Kubuntu 10.04. Qu'en est-il sous ubuntu ? Faut-il créer ce fichier ?

Il faut comprendre utilisateur comme celui qui a le droit d'utiliser le scanner. Idem pour le group. Soyez bien respectuez de la syntaxe.

En cas d'erreurs, les logs d'udev ne sont pas très bavards par défaut…

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 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.

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 temps que client saned pour l'instant. L'auteur de l'article a écrit au develloppeur 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écommantant la ligne :

connect_timeout = 60

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 … un piste pour résoudre le problème.

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.

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.
  • Faire l'installation des paquets « hpoj » pour pouvoir installer le scanner avec la commande sudo /etc/init.d/hpoj setup.
  • Assurez-vous que l'utilisateur de saned possède les droits sur le périphérique. Sinon, ajoutez-le au groupe « scanner ».
  • Bien vérifier que le fichier /etc/services (sur le serveur) dans la section :
#
# Services added for the Debian GNU/Linux distribution
#

contienne la ligne

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

et qu'elle commence bien par « sane-port » (et non par « sane »), comme cela peut être le cas si votre système est le fruit de mises à jour depuis des distributions anciennes. Sinon, éditez le fichier, ou utilisez le numero du port directement (ça marche avec inetd, mais avec xinetd ?)

  • 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

Ajouter l'adresse de l'imprimante dans le fichier /etc/hosts. Exemple :

 192.168.0.5    nom_du_fichier_ou_seront_envoyées_les_pages_numérisées 

le nom de fichier est optionnel. Cette manipulation rend l' accès au scanner rapide.


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


1)
Sous Windows XP, il est situé dans « C:\WINDOWS\system32\drivers\etc\ ».
  • tutoriel/utiliser_un_scanner_en_reseau.1275416777.txt.gz
  • Dernière modification: Le 18/04/2011, 14:50
  • (modification externe)