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 |