Serveur d'impression (cups + samba) sur debian 6.0

De wikiGite

Prérequis

Un serveur samba fonctionnel. Dans notre cas l'admin du domaine samba est l'utilisateur administrateur.

CUPS

Installer cups:

aptitude install cups.

Éditer le fichier /etc/cups/raw.convs et vérifier que cette ligne est décommenté :

application/octet-stream	application/vnd.cups-raw	0	-

Éditer le fichier /etc/cups/raw.types et verifier que cette ligne est décommenté :

application/octet-stream

SAMBA

Ajouter l'utilisateur administrateur au groupe lpadmin :

adduser administrateur lpadmin

Ajouter ceci dans /etc/samba/smb.conf :

[global]
 load printers = Yes
 printing = cups
 printcap name = cups
 #même nom d'imprimantes entre cups et samba
 force printername = yes
 
[printers]
  comment = Imprimantes
  path = /var/spool/samba
  browseable = yes
  public = yes
  guest ok = yes
  writable = no
  printable = yes
  use client driver = no
 
[print$]
  comment = drivers pour imprimantes
  path = /var/lib/samba/drivers
  browseable = yes
  guest ok = yes
  read only = yes
  write list = administrateur, root
  inherit permissions = yes

Puis donner les droits d'accès au répertoire :

chmod 1777 /var/spool/samba

(Le « 1 » de 1777 empêche que les fichiers soient effacés par d'autres utilisateurs que le propriétaire du fichier)


Imprimantes

Push automatique des drivers Windows

Créer l'arborescence de stockage des drivers windows pour samba dans /var/lib/samba/drivers :

drwxrwsrwx 2 root root 4096 26 déc.  17:13 COLOR
drwxrwsrwx 2 root root 4096 26 déc.  17:13 IA64
drwxrwsrwx 2 root root 4096 26 déc.  17:13 W32ALPHA
drwxrwsrwx 2 root root 4096 27 déc$tabLigneTmp\[5\].  10:40 W32MIPS
drwxrwsrwx 2 root root 4096 26 déc.  17:13 W32PPC
drwxrwsrwx 3 root root 4096 27 déc.  17:32 W32X86
drwxrwsrwx 2 root root 4096 26 déc.  17:13 WIN40
drwxrwsrwx 3 root root 4096 27 déc.  17:32 x64

On peut la créer facilement grâce à ce script :

#!/bin/bash
BASEDIR=/var/lib/samba/drivers;
if [ -e $BASEDIR ]
	then
		mkdir $BASEDIR
fi
for X in COLOR IA64 W32ALPHA W32MIPS W32PPC W32X86 WIN40 x64; do 
  mkdir -p $BASEDIR/$X;
done


Créer maintenant le répertoire qui accueillera les drivers Windows dans Cups :

mkdir -p /usr/share/cups/drivers/x64
  • Ajout du driver PostScript Windows 32bit

Pour le 32bit récupérer ces fichiers sur un système windows 32bit dans %WINDIR%\SYSTEM32\SPOOL\DRIVERS\W32X86\3 et les mettre dans /usr/share/cups/drivers/ :
Pour le 64bit récupérer ces fichiers sur un système windows 64bit dans %WINDIR%\SYSTEM32\SPOOL\DRIVERS\X64\3 et les mettre dans /usr/share/cups/drivers/x64 :

   ps5ui.dll
   pscript.hlp
   pscript.ntf
   pscript5.dll

!!!ATTENTION!!! Ces fichiers sont en MAJUSCULE sur Windows. Il est nécessaire de les mettre en minuscule sinon cupsaddsmb ne les exportera pas.


  • Ajout du driver postscript Cups V6 pour Windows

Afin d'avoir plus de fonctionnalités (comptage des pages, labels, la mise en attente...), il est possible d'ajouter en complément le driver PostScript de Cups.

Pour le 32bit récupérer ces fichiers sur http://svn.easysw.com/public/windows/trunk/i386/ et les mettre dans /usr/share/cups/drivers/ :
Pour le 64bit récupérer ces fichiers sur http://svn.easysw.com/public/windows/trunk/x64/ et les mettre dans /usr/share/cups/drivers/x64 :

   cups6.inf
   cups6.ini
   cupsps6.dll
   cupsui6.dll

Installation

L'installation des imprimantes peut maintenant se faire sur l'interface web de Cups. Lors de la sélection du fichier PDD, il est recommandé de mettre un fichier PPD officiel afin d'avoir toutes les fonctionnalités de l'imprimante (Le comptage des pages par exemple). Ce fichier PPD peut être trouvé dans l'archive contenant les drivers PostScript pour Windows.(Fonctionne sur une Toshiba e-Studio222cs)

Il faut maintenant exporter les imprimantes et les drivers sous samba :

service samba restart
service cups restart
cupsaddsmb -H localhost -U administrateur -v -a

Pour vérifier la bonne installation des drivers :

rpcclient localhost
     > enumprinters
     > enumdrivers

Les drivers seront automatiquement envoyé sur Windows lors de l'installation d'une imprimante sur Windows.


Statistiques d'impressions

http://phpprintanalyze.sourceforge.net/ : stat web cups Phpprintanalyse est une interface web pour cups permettant d'analyser le fichier page_log et de faire des graphiques.

Le serveur de statistiques se trouvant sur une autre machine , ajouter cette section dans /etc/cups/cupsd.conf afin que la page $IP_CUPS:631/admin/log/page_log soit accessible sans mot de passe :

<Location /admin/log>
Order allow,deny
Allow from 192.168.0.5
</Location>


cd /var/www/

Installation de phpPrintAnalyser

wget http://sourceforge.net/projects/phpprintanalyze/files/phpPrintAnalyzer/1.2/phpPrintAnalyzer-1.2.tar.gz
tar xvzf phpPrintAnalyzer-1.2.tar.gz

Installation de jpGraph

aptitude install php5-gd
wget --content-disposition http://jpgraph.net/download/download.php?p=1
tar xvzf jpgraph-3.0.7.tar.gz
mv jpgraph-3.0.7 jpgraph 
chown -R www-data:www-data jpgraph phpPrintAnalyzer

configuration

cd /var/www/phpPrintAnalyzer/inc/
cp config.inc.php.sample config.inc.php
vim config.inc.php


Problème de colonnes

Problème de décalage des colonnes entre les logs et le script php

Solution 1

Ajouter cette ligne à la fin du fichier /etc/cups/cupsd.conf :

PageLogFormat %p %u %j %T %P %C %{job-billing} %{job-originating-host-name} %{job-name} %{media} %{sides}


Solution 2

Modification a faire dans index.php :

  • Utilisateurs :

remplacer $tabLigneTmp[1] par $tabLigneTmp[2]

:%s/$tabLigneTmp\[1\]/$tabLigneTmp\[2\]/g

sauf la première ligne :

$tabLigneTmp[1] = strtolower($tabLigneTmp[1]);
  • Nombre de pages :

Remplacer $tabLigneTmp[6] par $tabLigneTmp[5]

:%s/$tabLigneTmp\[6\]/$tabLigneTmp\[5\]/g

TIPS

Installer automatiquement une imprimante sous windows

rundll32 printui.dll,PrintUIEntry /in /n \\SERVEUR\NOM_DE_IMP
rundll32 printui.dll,PrintUIEntry /in /n  \\SERVEUR\NOM_DE_IMP /y


Interface web de cups en français

source http://www.cups.org/str.php?L3840

cd /usr/share/cups

Télécharger la traduction en fonction de la version de Cups ( 1.4 sous Debian Squeeze) :

wget http://www.cups.org/strfiles/3840/fr.tar.gz : cups 1.4
wget http://www.cups.org/strfiles/3840/fr-1.5.0.tar.bz2 : cups 1.5
tar xvzf fr.tar.gz

Il semblerait qu'il y ai un souci avec la page de recherche d'imprimante traduite en francais (cups 1.4). Pour contourner le problème remettre la page en anglais en faisant ceci :

cp /usr/share/cups/templates/choose-device.tmpl /usr/share/cups/templates/fr/

Forcer impression en Recto/Verso

Editer les fichiers PPD de chaque imprimante se trouvant dans /etc/cups/ppd/

Justes après cette ligne :

*% _____ Job  File _____


Ajoutez :

*JobPatchFile 2: "
%%BeginFile: force_duplex 0.1 0
%%Copyright: 2009 by Helge Blischke
%%CreationDate: 2009-08-05
% Description:
% ------------
%       This PostScript snippet is designed to be used as a
%       JobPatchFile in a printer's PPD and performs the
%       following:
%       (1) sets the printer to duplex mode
%       (2) turns any following duplex statements to a noop.
 
% If the printer does not use the standard keys for duplex
% handling as specified in the PLRM, edit the following lines
% accordingly (refer to the printr's PPD for device specific
% keys):
/_Duplex        /Duplex         def
/_Tumble        /Tumble         def
%
% Save the original setpagedevice operator
/sys_setpagedevice /setpagedevice load def
% Force duplex printing
<< //_Duplex true //_Tumble false>> sys_setpagedevice
% Redefine setpagedevice to ignore specifying duplex on/off
/setpagedevice
{
        dup //_Duplex known{dup //_Duplex undef}if
        dup //_Tumble known{dup //_Tumble undef}if
        sys_setpagedevice
}bind def
% In case the printer understands level 1 duplexing operators
% (usually residing in statusdict), redefine them as noops here,
% following the template:
/setduplexmode where{pop userdict/setduplexmode {} put}if
%%EndFile
"

Ne pas Oublier les quotes

Sources

http://forum.ubuntu-fr.org/viewtopic.php?id=272919 : installation de cups et de samba sous ubuntu
https://wiki.samba.org/index.php/Samba_as_a_print_server : procedure de liaison de cups avec samba
http://www.cups.org/documentation.php/doc-1.6/man-cupsaddsmb.html : manuel de cupsaddsmb
http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/CUPS-printing.html : manuel d'integration de cups avec samba (très complet mais complexe)
http://www.virtualhelp.me/scripts/57-vb-script/351-adding-a-printer-using-scripts-windows : Ajouter automatiquement les imprimantes dans windows
http://blog.cybermonde.org/post/2010/06/01/Configurer-un-serveur-d-impression-pour-plusieurs-vlans : phpPrintAnalyser
http://manpages.ubuntu.com/manpages/lucid/fr/man8/cupsaddsmb.8.html : Reprendre ce tuto, si difficultés avec celui-ci