SDB:Imprimer via un partage SMB (Samba) ou Windows
Un article de openSUSE.
Version: 9.0
Sommaire |
Objectif
Vous voulez imprimer sur une imprimante qui est reliée à un ordinateur SMB ou à laquelle on peut s'adresser à travers un réseau et un ordinateur SMB.
Théorie
Un ordinateur SMB est un ordinateur qui est adressé via protocole SMB. Normalement, il s'agit d'un ordinateur Windows. Cependant, il peut s'agir aussi d'un ordinateur Linux sur lequel fonctionne le service "Samba". Afin que l'imprimante soit adressée avec le protocole SMB, il faut un "partage" pour celle-ci sur l'ordinateur SMB.
Le partage pour l'imprimante est clairement identifié dans le réseau par des "noms" :
- Nom d'hôte de l'ordinateur SMB (toujours nécessaire).
- Nom du partage (toujours nécessaire).
- Nom du "workgroup" ou "groupe de travail" (pas toujours nécessaire).
Pour avoir accès au partage de l'imprimante, un nom d'utilisateur et un mot de passe peuvent également être nécessaires.
Ces noms que le protocole SMB nécessite sont gérés par le service de noms NetBIOS. Le service de noms NetBIOS n'a rien à voir avec le service de noms DNS courant des réseaux TCP/IP. Bien que le protocole SMB soit basé sur le protocole TCP/IP, il n'utilise pas DNS comme service de noms mais NetBIOS. En fait, le nom d'hôte NetBIOS peut être différent du nom d'hôte DNS ; mais en règle générale, les deux correspondent. Cependant, le domaine DNS n'a aucune signification dans l'espace de noms NetBIOS. Ainsi, le nom d'hôte DNS pleinement qualifié, composé du nom d'hôte DNS et du domaine DNS, n'a en aucun cas une signification dans l'espace de noms NetBIOS. En pratique, l'adresse IP est également sans intêret dans l'espace de noms NetBIOS, à moins que le nom d'hôte NetBIOS soit effectivement de la forme "192.168.100.1".
Lorsqu'une imprimante est adressée depuis un ordinateur Linux via protocole SMB, cela ne sert qu'au transfert de données. L'hôte SMB ne procède à aucun filtrage (conversion) des données à imprimer en provenance des programmes d'application (par exemple, PostScript) en données spécifiques à l'imprimante. Pour cela, le filtrage doit se faire sur l'ordinateur Linux et il est donc nécessaire qu'un système d'impression complet fonctionne sur celui-ci. Une file d'attente avec filtrage doit être configurée sur l'ordinateur Linux afin d'envoyer, après le filtrage, les données spécifiques à l'imprimante au partage SMB. L'hôte SMB reçoit les données spécifiques à l'imprimante au les transmet à l'imprimante qui est associée au partage.
Procédure
Paquetages nécessaires :
- Pour envoyer des données (ici, des données d'imprimante) vers un partage SMB, seul le paquetage "samba-client" est nécessaire.
- En outre, un système d'impression complet (CUPS ou LPRng/lpdfilter) est également nécessaire.
Déterminer les noms NetBIOS :
La commande "nmbstatus" répertorie tous les workgroups disponibles dans le réseau ainsi que les noms d'hôte NetBIOS leur correspondant, par exemple :
user@host> nmbstatus Found 123 hosts. Collecting additional information. Please wait. ... WORKGROUP TUX-NET MEMBERS GEEKO TUX ...
Déterminer les partages disponibles :
La commande "smbclient -L NetBIOS-nom d'hôte -N" répertorie tous les partages disponibles sur l'ordinateur SMB ainsi que les noms d'hôte NetBIOS leur correspondant, par exemple :
user@host> smbclient -L GEEKO -N ... Sharename Type Comment --------- ---- ------- LPT1 Printer ...
En cas de besoin, on peut y ajouter "-U nom d'utilisateur%mot de passe", afin que les partages qui nécessitent un nom d'utilisateur et un mot de passe pour l'accès soient également affichés :
smbclient -L GEEKO -U USER%PASSWORD -N
Tester si l'accès à l'imprimante est possible via partage SMB :
La commande suivante envoie à l'imprimante un unique caractère "\r" (retour de chariot) via partage SMB. Rien ne sera imprimé. Cependant, l'imprimante peut éjecter une page blanche.
echo -en "\r" | smbclient "//NetBIOS-nom d'hôte/partage" -c "print -" -N
Utilisez le nom d'hôte et le partage correspondants. Si nécessaire, un workgroup et/ou un nom d'utilisateur et un mot de passe peuvent être ajoutés à la commande smbclient :
smbclient "//NetBIOS-nom d'hôte/partage" "mot de passe" -c "print -" -N -U "nom d'utilisateur" -W "workgroup"
Si l'imprimante peut imprimer directement du texte ASCII (sans filtrage intermédiaire), la commande echo peut alors être remplacée par ceci :
echo -en "\rHello\r\f"
afin d'imprimer le mot "Hello".
La séquence complète peut avoir l'aspect suivant :
echo -en "\rHello\r\f" | smbclient "//NetBIOS-nom d'hôte/partage" "mot de passe" -c "print -" -N -U "nom d'utilisateur" -W "workgroup"
où le nom d'hôte NetBIOS et le partage correctes doivent toujours être entrés alors que le mot de passe, le nom d'utilisateur et le workgroup ne sont à entrer que si besoin est.
Le DeviceURI correct pour CUPS :
Avec CUPS, le DeviceURI dans /etc/cups/printers.conf détermine comment les données doivent être transmises à l'imprimante (ou au partage SMB). Le DeviceURI doit être comme spécifié dans "man smbspool" :
· smb://server/printer · smb://workgroup/server/printer · smb://username:password@server/printer · smb://username:password@workgroup/server/printer
Ici, "server" correspond au nom d'hôte NetBIOS et "printer" au partage. Les valeurs pour "server", "printer" et éventuellement "username", "password" et "workgroup" doivent correspondre exactement à celles utilisées dans la commande ci-dessus pour le nom d'hôte NetBIOS et pour le partage et éventuellement pour le mot de passe, le nom d'utilisateur et le workgroup.
Cas particulier Windows XP/2000 :
Si vous avez une imprimante connectée à un ordinateur Windows XP/2000 qui peut être utilisé sans nom d'utilisateur et mot de passe, consultez à ce sujet l'article "CUPS - pas d'impression sur le client XP" :
SDB:CUPS - pas d'impression sur le client XP
Configuration avec YaST sous SUSE LINUX 9.0 :
La configuration avec YaST pose des problèmes, en particulier lorsqu'un workgroup est entré.
Le plus sûr est d'entrer les valeurs pour
- Server (nom d'hôte NetBIOS)
- Printer (partage)
et éventuellement pour
- workgroup
- nom d'utilisateur
- mot de passe
dans le masque de dialogue de YaST de la même façon que dans la commande smbclient ci-dessus, si toutefois la commande smbclient fonctionne dans problèmes.
Il faut alors continuer sans tester l'accès SMB. C'est uniquement à la fin que l'on vérifiera que tout fonctionne correctement (c'est à dire aussi bien l'accès SMB aue le filtrage) avec l'impression de la page de test de YaST.
Explication des problèmes actuels dans YaST :
- Confusion entre noms NetBIOS et noms DNS ou adresses IP :
Dans l'entrée ci-dessus, YaST ne définit pas le nom d'hôte NetBIOS comme "Server" comme cela devrait être mais utilise le nom d'hôte DNS plus le domaine DNS lorsque la détection automatique démarre. Le nom d'hôte NetBIOS correspond généralement avec le nom d'hôte DNS mais comme expliqué plus haut, le domaine DNS n'a aucune signification dans le cas de SMB. L'adresse IP n'a pas de signification non plus dans le cas de SMB.
- Un script test erroné pour l'accès SMB à tester si un workgroup est utilisé :
Dans ce cas, le message suivant apparaît dans YaST :
Un problème a surgi. Votre accès réseau n'est pas configuré correctement ... ... veuillez vérifier le nom de l'imprimante ...
même si toutes les entrées sont correctes, ce qui peut être un peu déconcertant.
Le script test /usr/lib/YaST2/bin/test_remote_smb peut être corrigé rapidement en remplaçant les lignes :
[ -z "$WORKGROUP" ] || HOST="$WORKGROUP/$HOST" echo -en "\r" | smbclient "//$HOST/$QUEUE" "$PASSWORD" ...
par les lignes suivantes :
echo -e "\nTesting $QUEUE on $WORKGROUP $HOST:" echo -en "\r" | smbclient "//$HOST/$QUEUE" "$PASSWORD" -c "print -" -N -U "$USER" -W "$WORKGROUP"
Keywords: imprimer | imprimante | yast | yast2 | smb | samba | share | partage | workgroup | windows

