SDB:Imprimer via un partage SMB (Samba) ou Windows

Aller à : navigation, rechercher

Objectif

Vous voulez imprimer sur une imprimante qui est reliée à un hôte SMB ou à laquelle on peut s'adresser à travers le réseau via un hôte 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

Paquets nécessaires

  • Pour envoyer des données (ici, des données d'imprimante) vers un partage SMB, seul le paquet "samba-client" est nécessaire.
  • En outre, un système d'impression complet (CUPS et les pilotes d'impression) est également nécessaire.

Déterminer les noms NetBIOS

La commande "nmbstatus" répertorie tous les groupes de travail disponibles sur 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 nom_d_hôte_NetBIOS -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 l'imprimante

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 "groupe_de_travail"

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 groupe de travail 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

Version actuelle

Regardez la version actuelle de Swerdna: Printer Sharing: openSUSE 10 and 11 Samba Print Server for Linux & Windows Clients (en)

Plus d'informations

Portal:Printing