7. Drucker und Spooling
=======================
|
| next | back | 7. Drucker und Spooling | WS 2013/14 - 1 |
Der Drucker - das unbekannte Wesen
Druckertypen:
Nadeldrucker, Thermodrucker
Tintenstrahldrucker
Laserdrucker, Farblaserdrucker
Druckerschnittstellen:
direkter Anschluß - nur für einen Rechner
serielle Schnittstelle (RS232) - /dev/tty01, /dev/ttya, ..
parallele Schnittstelle - /dev/lp, /dev/lp0, /dev/lp1
bidirektional (unidirektional)
USB Schnittstelle - /dev/usbdev1
Netzwerkschnittstelle - Anschluß über Netzwerk, unterschiedliche
Protokoll, für mehrere Rechner nutzbar
nmap <Druckername> gibt Auskunft über die Leistungsfähigkeit
hp2200 Laserjet
PORT STATE SERVICE
80/tcp open http
280/tcp open http-mgmt
515/tcp open printer
9100/tcp open jetdirect
|
| next | back | 7. Drucker und Spooling | WS 2013/14 - 2 |
hp4 Laserjet DELL 5300
PORT STATE SERVICE PORT STATE SERVICE
21/tcp open ftp 80/tcp open http
23/tcp open telnet 427/tcp open svrloc
80/tcp open http 443/tcp open https
280/tcp open http-mgmt 515/tcp open printer
443/tcp open https 631/tcp open ipp
515/tcp open printer 2000/tcp open callbook
631/tcp open ipp 5200/tcp open unknown
1782/tcp open unknown 9100/tcp open jetdirect
9100/tcp open jetdirect
Für uns wichtig:
http,https: Konfigurationsschnittstelle
printer: RFC 1179, LPD-Protocoll (BSD-Netzwerkdrucker)
Spooler für Druckaufträge
ipp RFC 3380, ipp-Protokoll - Internet Printing Protocol (CUPS)
Spooler für Druckaufträge, (Konfiguration)
jetdirect: RFC 1759, HP-Protokoll (Printer PDL)
Spooler für Druckaufträge, (Konfiguration)
Druckersprachen - für die Beschreibung der Druckaufträge
PS - Postscript (Level 1, Level 2, Level 3)
Unterschiedliche Leistungsfähigkeiten der Drucker werden
durch PPD-Files (Postscript Printer Description) beschrieben
HP PCL 4, HP PCL 5, HP PCL 6, Kyocera Prescribe, KPDL 3, ESC/PS2, ..
- jeder Hersteller hat seine private Druckersprache
|
| next | back | 7. Drucker und Spooling | WS 2013/14 - 3 |
Typen von Druck- und Drucker-Spool-Systemen
BSD (SunOS, Ultrix, DEC-UNIX, LINUX)
System V (Solaris, HP-UX 10.x, SCO UNIX,AIX, ...)
CUPS (LINUX, Solaris, ....)
Bestandteile der Spoolingsysteme:
Nutzerfrontend:
lpr, lp
Queues:
Warteschlangen für einzelne Geräte
Spool-Verzeichnisse:
/usr/spool/lp/..., /var/spool/lp, /var/spool/cups
Server-Prozess, Drucker-Daemon, Scheduler:
lpd
lpsched, in.lpd, lpNet
cupsd
Administrationstools:
lpq, lprm, lpc, lpget, lpmove, lpset, lptest, lpinfo,
lpadmin, lpfilter, lpforms, lpshut, lpsystem, lpusers,
lpstat, cancel, enable, accept, lpoptions, lphelp,
Konfigurationsdateien:
/etc/printcap
/usr/spool/lp/...
/etc/hosts.lpd
/etc/hosts.equiv
/etc/cups/
|
| next | back | 7. Drucker und Spooling | WS 2013/14 - 4 |
BSD-System
----------
Funktionsweise:
Quelle1 Datenfile-Quelle1 nach /var/spool/lpd
| ^
| |
+----> lpr-------+
+----> lp--------+
| | |
| | v
| | Datenfile-Quelle2 nach /var/spool/lpd
Quelle2 |
|
+-->Steuerungsdateien nach /var/spool/lpd
?
|
| local
lpd----------->lpd Daemon(child)
| fork |
remote via | V
TCP/IP | drucker
515 |
V
lpd-+--->Datenfile-Quelle1 nach /var/spool/lpd
+--->Steuerungsdatei nach /var/spool/lpd
|
| next | back | 7. Drucker und Spooling | WS 2013/14 - 5 |
of-Filter (einmal pro Druckauftrag)
--------
data-file
|
|
V exec fd=1
lpd -------->of-filter-------> printer
fork +----pipe------+
if-Filter (einmal pro Datenfile)
---------
data-File data-File
| |
| |
V exec V fd=1
lpd-------->if-filter-------> printer
fork
Remote-Drucker
lokal internet remote
lpd------->lpd---------->lpd----------->lpd
daemon client daemon client
|
| next | back | 7. Drucker und Spooling | WS 2013/14 - 6 |
Steuerungsdatei:
/etc/printcap
#
lp|ps|lps|lj_with_ps|ll|lj_as_lp:\
:lp=/dev/ttya:br#19200:\
:ms=-parenb,cs8,-cstopb,ixon:\
:sh:sf:rw:\
:sd=/usr/spool/lpd:\
:af=/var/adm/psacct:\
:lf=/var/adm/pslog:\
:if=/home/local/bin/psif:
#Remote Drucker an emu
duplo:\
:lp=:rm=emu:rp=lp:sd=/usr/spool/lpd:\
:lf=/usr/adm/lpd-errs:
Bedeutung:
lp - Druckername
br - Baudrate
ms - Einstellungen der seriellen Schnittstelle
sh - unterdrücke Kopfseite1
sf - unterdrücke Formfeeds
rw - read/write Open
lo - Lockdatei
sd - Spoolverzeichnis
mx - Maximale Länge der Druckdatei (0 = unendlich) in Blocks
af - Accountfile
1.00 chekov:torres Fri Jun 13 17:16:12 1997
2.00 chekov:torres Fri Jun 13 17:19:33 1997
1.00 chekov:tsitirid Mon Jun 16 14:51:42 1997
|
| next | back | 7. Drucker und Spooling | WS 2013/14 - 7 |
lf - Fehlerdatei
parent is alive: Error 0
parent execs p_filter: Error 0
child is alive: Error 0
parent is alive: Error 0
parent execs p_filter: Error 0
child just before its end: Error 0
psif just before exit: Error 0
if - Inputfilter
of - Outputfilter
rm - Remotemaschine
rp - Remotedrucker
pl - Seitenlänge
pw - Seitenbreite
/etc/hosts.lpd
/etc/hosts.equiv
<hostname> [<username>]
<hostname> [<username>]
Nur die diesen Dateien aufgeführten Rechner/Nutzer können remote
auf den aktuellen Host drucken!!!
Druckerdaemon starten:
/usr/lib/lpd in /etc/rc.local
|
| next | back | 7. Drucker und Spooling | WS 2013/14 - 8 |
Spooling-Dateien:
in /usr/spool/lpd werden vom lpr-Kommando erzeugt
Beispiel:
lpr -plp abc xyz:
dfA344bellus entspricht abc
dfB344bellus entspricht xyz
cfA344bellus Steuerdatei
Aufbau der Steuerdatei:
Hbellus - Host
Pbell - Login-Name des Nutzers
Jabc - Auftragsname
Cbellus - Klassenbezeichnung
Lbell
fdfA344bellus - Name der Datei
UdfA344bellus - Name der zu löschenden Datei
Nabc - Orginalname
fdfB344bellus
UdfB344bellus
Nxyz
Lbell
|
| next | back | 7. Drucker und Spooling | WS 2013/14 - 9 |
Absenden eines Druckjobs
------------------------
1. lpr - Senden eines Druckjobs an den Drucker
lpr [-Pprinter] [-#copies] [-Cclass] [-Jjob]
[-Ttitle] [-i [indent]] [-1234font] [-wcols]
[-r] [-m] [-h] [-s] [-filter-option]
[filename ... ]
2. lp - Senden eines Druckjobs an den Drucker
lp [-cmsw] [-ddest] [-nnumber] [-ooption] [-ttitle]
filename...
Verwaltungskommandos
--------------------
lpq - Anzeigen der Druckerqueue
lpq [-Pprinter] [-l] [+[interval] ] [job# ...]
[username ...]
lprm - Streichen eines Jobs aus der Druckerqueue
lprm [-Pprinter] [-] [job # ...] [username ... ]
|
| next | back | 7. Drucker und Spooling | WS 2013/14 - 10 |
lpc - Lineprinter Steuerungskommando (für Superuser)
lpc [ command [ parameter... ] ]
Subkommandos:
? [command]...
help [command]...
abort [all| [printer...]]
clean [all| [printer...]]
disable [all| [printer...]]
down [all| [printer...]] [message]
enable [all| [printer...]]
exit
quit Exit from lpc.
restart [all| [printer...]]
start [all| [printer...]]
status [all| [printer...]]
stop [all| [printer...]]
stop [all| [printer...]]
topq printer [job#...] [user...]
up [all| [printer...]]
cancel - Canceln eines Druckerjobs
cancel [ ids ] [ printers ]
|
| next | back | 7. Drucker und Spooling | WS 2013/14 - 11 |
System V
--------
Funktionsweise:
Quelle1
| Datenfile-Quelle1 lpNet
+-----------> lp----------^ ^------------in.lpd<------------
+-----------> lp----------v | | remote
| | | Datenfile-Quelle2 | | TCP/IP
Quelle2 | | | | 515
| +----> Steuerungsdatei<-------------+ |
| | |
| FIFO +-------------+------------------+
| +---+ | FIFO
V V V
lpsched---------->lpsched (child)
fork |
| fork
V
lpsched (2.child)
|
|
Datenfile1 |
| V
+----------------------> Druckerinterface
+----------------------> Programm
Datenfile2 |
|
V
Drucker
|
| next | back | 7. Drucker und Spooling | WS 2013/14 - 12 |
Konfigurations-Verzeichnisse:
/var/spool/lp:
SCHEDLOCK - File, Lockfile für lpsched
admins - Directory
lp - Direct. für ADM-Directories
classes -Klassen
forms -Formate
interfaces-Interfaces
printers -Drucker
qstatus -Queue-Status
bin - Directory für Binaries
default - Defaultprinter, File
fifos - Directory, für Pipes
logs - Directory für logs
model - Directory für Druckertypen
requests - Directory für Anforderungen
system - Directory für Druckerstatusfiles
temp - Directory
users - File
/var/lp
ipp-listener - ipp-Informationen
logs - Logfiles
ppd - ppd-Files
|
| next | back | 7. Drucker und Spooling | WS 2013/14 - 13 |
Konfigurationsfile: (BSD-like)
/etc/printers.conf
#
# If you hand edit this file, comments and structure may change.
# The preferred method of modifying this file is through the use of
# lpset(1M)
#
flip:\
:bsdaddr=paprika,flip,Solaris:\
:description=Haus 4 1.Etage (begrenzter Zugriff):
lpemu:\
:bsdaddr=fink,lpemu,Solaris:\
:description=Doppelseitendrucker in 3.2.11:
lpbeat:\
:bsdaddr=fink,lpbeat,Solaris:\
:description=Doppelseitendrucker Haus 3 Raum 310:
_default:\
:use=lpbeat:
|
| next | back | 7. Drucker und Spooling | WS 2013/14 - 14 |
Kommandos
---------
Nutzer:
lp - Starten eines Druckauftrages
lp [-c] [-m] [-p] [-s] [-w] [-d dest]
[-f form-name [-d any]] [-H special-handling]
[-n number] [-o option] [-P page-list]
[-q priority-level] [-S character-set [-d any]]
[-S print-wheel [-d any]] [-t title]
[-T content-type [-r]] [-y mode-list]
[ file... ]
cancel - Abbrechen eines Druckauftrages
cancel JOB-ID
lpstat - Status abfragen
lpstat [-aListe] [-cListe] [-oListe] [-pListe]
[-uListe] [-vListe] [-d] [-s] [-t] [-r]
Deamonen:
lpsched
lpNet
|
| next | back | 7. Drucker und Spooling | WS 2013/14 - 15 |
Administration:
accept - Spoolen erlauben, Druckerwarteschlange freigeben
accept Queue
reject - Spoolen verbieten. Druckerwarteschlange sperren
reject [-r "Grund"] Queue
enable - Drucker freigeben
enable Drucker
disable - Drucker sperren
disable [-r "Grund"] Drucker
lpfilter- Filtermanipulation
lpmove - Verschieben von Druckauftragen
lpmove Auftrags-ID Neuer_Drucker
lpmove Alter_Drucker Neuer_Drucker
lpshut - Scheduler stoppen
lpadmin - Drucker und Druckerqueue verwalten
lpadmin [-p log.Drucker]
[-e vorhandener Drucker]
[-i Schnittstellenprogramm]
[-v Gerätepfad]
[-m Model]
[-c Geräteklasse]
[-u Nutzer]
lpadmin -x Drucker - löschen
lpadmin -pPS -r Druckerklasse -
Drucker aus Druckerklasse
lpadmin -plaser -v/dev/lp -mcolorlaserjet
Einrichten des Druckers plaser
|
| next | back | 7. Drucker und Spooling | WS 2013/14 - 16 |
lpusers - Prioritäten für Nutzer festlegen
lpusers [-q Priorität] [-u user]
lpstat - Status anzeigen
-t - Ausgabe aller Statusinformationen
-d - Default Drucker
-r - Status des Schedulers
-s - Zusammenfassung der Statusinformationen (wichtige)
-v - Druckergeräte
-a - Drucker mit accept-Freigaben
-p - Druckerstatus enable
|
| next | back | 7. Drucker und Spooling | WS 2013/14 - 17 |
CUPS - Common Unix Printing System
----------------------------------
http://www.cups.org/
Protokoll: IPP (Internet Printing Protocol) - 631
Druckjob:
Identifikationsnummer + Attribute
Attribute: Ziel, Priorität, Medientyp, Anzahl der Kopien
Druckerklasse: Anzahl von gleichwertigen Druckern
Struktur:
Administration-----------------+
http:631 V
cupsd
Konfigurationsfiles -----> Scheduler ------------+
| |
CUPS-API |
^ V
| Filters + CUPS Imaging
hp-jetdirect 9100-------->| |
Berkley Kommandos ------->| V
| Backends
System V Kommandos ------>+ (local,remote)
|
| next | back | 7. Drucker und Spooling | WS 2013/14 - 18 |
Konfigurationsfiles für CUPS:
Directory: /etc/cups
Files:
classes.conf - Druckerklassenkonfigurationsfile
# Class configuration file for CUPS v1.3.9
# Written by cupsd on 2009-09-21 16:01
printers.conf - Konfigurationsfile für lokale Drucker (mitte)
# Printer configuration file for CUPS v1.3.9
# Written by cupsd on 2009-09-21 16:01
<DefaultPrinter nante>
Info Dell-LinuxPool
Location 3.212
DeviceURI socket://nante:9100
State Idle
StateTime 1253541675
Accepting Yes
Shared Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
OpPolicy default
ErrorPolicy stop-printer
</Printer>
|
| next | back | 7. Drucker und Spooling | WS 2013/14 - 19 |
client.conf - Client-Konfigurationsfile (CUPSD als Client, alex)
# Sample client configuration file for the Common UNIX Printing System
# (CUPS).
#######################################################################
# This is the CUPS client configuration file. This file is used to #
# define client-specific parameters, such as the default server or #
# default encryption settings. #
# #
# Put this file on /etc/cups/client.conf (system use) or #
# ~/.cups/client.conf (personal use). #
# #
# more information in the manual page client.conf(5)
########################################################################
# Encryption: directive specifies the default encryption settings for
# the client.
#
# Possible values:
# IfRequested
# Never
# Required
# Always
Encryption IfRequested
#Encryption Never
#Encryption Required
#Encryption Always
#ServerName /domain/socket
#ServerName foo.bar.com:8631
ServerName mitte.informatik.hu-berlin.de
|
| next | back | 7. Drucker und Spooling | WS 2013/14 - 20 |
cupsd.conf - CUPSD-Konfigurationsfile Server (Zugriffsrechte)
# "$Id: cupsd.conf.in 7199 2008-01-08 00:16:30Z mike $"
# Sample configuration file for the Common UNIX Printing System (CUPS)
# scheduler. See "man cupsd.conf" for a complete description of this
# file.
# Log general information in error_log - change "info" to "debug" for
# troubleshooting...
LogLevel info
# Administrator user group...
SystemGroup sys root
# Only listen for connections from the local machine.
Listen *:631
Listen localhost:631
Listen /var/run/cups/cups.sock
# Show shared printers on the local network.
Browsing On
BrowseOrder allow,deny
BrowseAllow all
BrowseAddress @LOCAL
# Default authentication type, when authentication is required...
DefaultAuthType Basic
# Restrict access to the server...
<Location />
Allow @LOCAL
Order allow,deny
Allow 127.0.0.2
Allow From 141.20.28.20
</Location>
|
| next | back | 7. Drucker und Spooling | WS 2013/14 - 21 |
# Restrict access to the admin pages...
<Location /admin>
Encryption Required
Order allow,deny
</Location>
# Restrict access to configuration files...
<Location /admin/conf>
AuthType Default
Require user @SYSTEM
Order allow,deny
</Location>
# Set the default printer/job policies...
<Policy default>
# Job-related operations must be done by the owner or
# an administrator...
<Limit Send-Document Send-URI Hold-Job Release-Job
Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription
Renew-Subscription Cancel-Subscription Get-Notifications
Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job
CUPS-Move-Job>
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
# All administration operations require an
# administrator to authenticate...
<Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer
CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
AuthType Default
Require user @SYSTEM
|
| next | back | 7. Drucker und Spooling | WS 2013/14 - 22 |
Order deny,allow
</Limit>
# All printer operations require a printer operator
# to authenticate...
<Limit Pause-Printer Resume-Printer Enable-Printer
Disable-Printer Pause-Printer-After-Current-Job
Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer
Activate-Printer Restart-Printer Shutdown-Printer
Startup-Printer Promote-Job Schedule-Job-After
CUPS-Accept-Jobs CUPS-Reject-Jobs>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
# Only the owner or an administrator can cancel or
# authenticate a job...
<Limit Cancel-Job CUPS-Authenticate-Job>
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
<Limit All>
Order deny,allow
</Limit>
</Policy>
DefaultPolicy default
# easy is a very relaxed policy
<Policy easy>
# Job-related operations must be done by the
# owner or an administrator...
|
| next | back | 7. Drucker und Spooling | WS 2013/14 - 23 |
<Limit All>
Satisfy any
Order allow,deny
</Limit>
</Policy>
# paranoid is a very restricted policy
<Policy paranoid>
# Job-related operations must be done by the owner
<Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job
Purge-Jobs Set-Job-Attributes Create-Job-Subscription
Renew-Subscription Cancel-Subscription Get-Notifications
Reprocess-Job Cancel-Current-Job Suspend-Current-Job
Resume-Job CUPS-Move-Job>
Require user @OWNER
Allow from 127.0.0.0/8
Order deny,allow
</Limit>
# All administration operations require an administrator
# to authenticate...
<Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer
CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
AuthType Default
Require user @SYSTEM
Allow from 127.0.0.0/8
Order deny,allow
</Limit>
# All printer operations require a printer operator
# to authenticate...
<Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer
Pause-Printer-After-Current-Job Hold-New-Jobs
|
| next | back | 7. Drucker und Spooling | WS 2013/14 - 24 |
Release-Held-New-Jobs Deactivate-Printer Activate-Printer
Restart-Printer Shutdown-Printer Startup-Printer Promote-Job
Schedule-Job-After CUPS-Accept-Jobs CUPS-Reject-Jobs>
AuthType Default
Require user @SYSTEM
Allow from 127.0.0.0/8
Order deny,allow
</Limit>
# Only the owner or an administrator can cancel or authenticate
# a job...
<Limit Cancel-Job CUPS-Authenticate-Job>
Require user @OWNER
Allow from 127.0.0.0/8
Order deny,allow
</Limit>
<Limit All>
Require user @OWNER @SYSTEM
Allow from 127.0.0.0/8
Order deny,allow
</Limit>
</Policy>
#
# End of "$Id: cupsd.conf.in 7199 2008-01-08 00:16:30Z mike $".
printers.conf - Definition der Drucker
|
| next | back | 7. Drucker und Spooling | WS 2013/14 - 25 |
ssl - Dirctory, SSL-Files
mime.types - Mime-Type Beschreibung
# Format of Lines:
# super/type rules
application/pdf pdf string(0,%PDF)
application/postscript ai eps ps string(0,%!) string(0,<04>%!) \
contains(0,128,<1B>%-12345X) + \
(contains(0,4096,"LANGUAGE=POSTSCRIPT") \
contains(0,4096,"LANGUAGE = Postscript") \
contains(0,4096,"LANGUAGE = PostScript") \
contains(0,4096,"LANGUAGE = POSTSCRIPT") \
(contains(0,4096,<0a>%!) + \
!contains(0,4096,"ENTER LANGUAGE")))
#application/x-dvi dvi string(0,<F702>)
application/mozilla-ps ps (string(0,%!) + \
contains(30,200,"Creator: Mozilla PostScript"))
application/netscape-ps ps (string(0,%!) + \
contains(30,200,"Creator: Mozilla (NetScape)"))
image/gif gif string(0,GIF87a) string(0,GIF89a)
image/png png string(0,<89>PNG)
application/x-cshell csh printable(0,1024) + string(0,#!) +\
(contains(2,80,/csh) contains(2,80,/tcsh))
application/x-perl pl printable(0,1024) + string(0,#!) +\
contains(2,80,/perl)
application/x-shell sh printable(0,1024) + string(0,#!) +\
(contains(2,80,/bash) contains(2,80,/ksh)\
contains(2,80,/sh) contains(2,80,/zsh))
|
| next | back | 7. Drucker und Spooling | WS 2013/14 - 26 |
pstoraster.convs - PS-Konvertierung
application/vnd.cups-postscript \
application/vnd.cups-raster 100 pstoraster
command.types - neue Konvertierungen
# Define the new application/vnd.cups-command filetype...
application/vnd.cups-command string(0,'#CUPS-COMMAND')
#
# End of "$Id: command.types,v 1.1.78.1 2007/12/23 easysw Exp $".
#
mime.convs - mime-Type Konvertierungen
snmp.conf - snmp-Konfiguration SNMPv1
# Sample SNMP configuration file for CUPS. See "man cups-smnp.conf"
# for a complete description of this file.
Address @LOCAL
Community public
#
ppd - Directory für PPD-Files
|
| next | back | 7. Drucker und Spooling | WS 2013/14 - 27 |
Serverprogramme:
cupsd - Scheduler
cups-deviced - CUPS-Device-daemon: pollt die backends
(von cupsd gestartet)
cups-driverd - zeigt bzw. listet PPD-Files
cupd-driverd cat <ppd-name>
cups-driverd list <reques-id> <limit> <options>
cups-lpd - Kommunikation mit lpd-Clients
cups-polld - Abfrage von Remote-Servers über IPP
|
| next | back | 7. Drucker und Spooling | WS 2013/14 - 28 |
Administration:
Kommandos:
lpstat - Queue-Status abfragen
lpstat -t
lpstat -a
accept - Drucker freigeben
reject - Drucker sperren
lpmove - Druckjob verschieben zu einem anderen Ziel
lpinfo - Informationen über verfügbare Drucker und Treiber ausgeben
lpinfo -v - Protokolle
lpinfo -m - Druckertreiber
lpinfo -h mitte:631 -v
lpadmin - Administrationstool
lpadmin -pnante -D"Laserjet Linuxpool" -L"Raum III.212" \
-vsocket://141.20.21.157:515 -mlaserjet.ppd
Alles geht über http://localhost:631/
|
| back | 7. Drucker und Spooling | WS 2013/14 - 29 |