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.
Pré-requis
- 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).
Installation du serveur
METHODE 1 : Ubuntu 9.04 et versions suivantes
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
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).
METHODE 2 : toutes versions
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.
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
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
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
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"
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
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 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.
Sur le client
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).
É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 ».
Résolutions de problèmes
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.
Désinstallation
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.
Notes
- 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
Scanner avec sortie réseau
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