Filters BSD Printer Configuration and the Printer Capability Database
10.2.1.4 Filters
The UNIX piping ability is widely implemented in the printing subsystem. A number of filters can be inserted in sequence in print job processing; these filters match printing files with printers. This approach provides the maximum possible flexibility in printing and makes the printing subsystem independent of the implemented printers. Quite simply, all required matching and any necessary adjustment of any specific printer characteristic becomes programmable. Filters are usually shell script files, and they are specified within the printer capability database in the etcprintcap file. Most of the filters are correlated with the options of the print command lpr; a corresponding filter provides the necessary preprocessing of data to fulfill the options requirements. However, two filters are the most common: if — the input filter — and of — the output filter. Their names often cause confusion, because the filters are used in an almost identical way: they are called by the daemon when a print job is sent to a printer in that sense they are both output filters for the daemon, or input filters for a printing device. When a user does not specify a filter−related option, either the if or of filter will be used. There are three cases of the corresponding printcap entry in the etcprintcap database worth examining: If the field if occurs, but no of field exists, the if filter will be called every time any print job is sent to the print device. 1. If the field of occurs, but no if field exists, the lpd daemon will call the of filter once for all print jobs in a queue and send them en masse to the print device. 2. If both fields if and of exist, the of filter will be used to send the banner page, while the if filter will be called for every print job separately. 3. It is highly recommended that a system administrator use if filters, because they are much easier to debug; of filters can be very confusing. One of the common problems related to printing is the so−called staircase effect in the printing. What is the staircase effect? The character pair CRLF carriage−returnline−feed is a common way to terminate each line of text, because old mechanical teletypes required a carriage return before shifting to a new line. UNIX continued this traditional text treatment. However, in a DOS text file, each line of text is terminated with a LF line−feed character only, assuming an automatic insertion of the CR carriage−return character. If such a file reaches the UNIX environment unchanged, from the UNIX standpoint, the file is corrupted and incomplete. Taken literally, this text file printed on an ASCII device will start each line below the end of the previous line. This is known as the staircase effect. In todays heterogeneous system environment, transfer of files between UNIX and non−UNIX platforms is quite common for added confusion, on the AppleMacintosh platform each line of the 231 This pending problem can also be fixed by providing the appropriate data filtering during printing. Some printers can be set to treat the single LF character as the LF+ CR pair, while others cannot. In the later case, one solution is to create an appropriate input shell script filter, which will convert each line of text before printing. Below we will see two possible solutions, tested on the Linux platform. These examples are written for the bash shell Bourne Again Shell and the Panasonic KX−P4411 laser printer. A shell script input filter that adds a CR character at the end of each line can be created: binsh if [ 1 = −l ];then cat else sed −e sM fi The echo −ne assumes that binsh is really bash echo −ne \\f Let us name the file crlf−if1. The test of the first argument 1 allows a bypass of the insertion of CR when the lpr −l command is used; otherwise, the CR character is inserted at the end of each line using the sequential editor sed M is a CR character, edited by vi as CTRL−v CTRL−m. At the end of the file, the form−feed is sent to print the last page properly. Alternatively, the printer itself can be controlled by an external escape sequence that sets the way the printer handles LF character it treats the LF character as two joint characters, CR+LF. For the implemented PANASONIC printer, the escape sequence is: ESC k2G. A simple filter that uses the echo −ne command to send this sequence at the start of printing could be: binsh Filter for HP printer to treat LF as CRLF The echo −ne assumes that binsh is really bash echo −ne \\033k2G cat echo −ne \\f Let us name this file crlf−if2, and copy both filter files in the usrlibfilters directory: ls −l usrlibfilterscrlf−in −rwxr−xr−x 1 root daemon 128 Dec 14 16:25 crlf−if1 −rwxr−xr−x 1 root daemon 147 Dec 16 09:22 crlf−if2 Both filters are workable, but remember that the second filter is printer dependent it can be slightly different on another printer. Finally, the etcprintcap file should be updated appropriately. The corresponding entries in the etcprintcap file are presented: cat etcprintcap Copyright c 1983 Regents of the University of California. All rights reserved. etc.printcap 5.2 Berkeley 5588 Generic printer: 232 ..... ..... PANASONIC Partner jet pan|pancrlf|panasonic|KX−P4410:\ :lp=devlp1:\ :sd=usrspoollp1:\ :mx0:\ :sh:\ :if=usrlibfilterscrlf−if1:\ :lf=usrspoollp1pan−err:\ :tr: HP Laser jet plus ljet|hplp|hpj|HP Laserjet:\ :lp=devlp1:\ :sd=usrspoollp1:\ :mx0:\ :sh:\ :if=usrlibfilterscrlf−if2:\ :lf=usrspoollp1 hp−err: ..... ..... The arbitrarily named logical printers logical because both point to the same physical printer pan and ljet can easily use both of the above filters.10.2.1.5 Linux Printing Subsystem
Parts
» Unix Administration. 7485KB Mar 29 2010 05:04:17 AM
» UNIX Operating System UNIX — Introductory Notes
» Berkeley Standard Distribution — BSD UNIX System V or ATT UNIX
» System Administrators Job UNIX System and Network Administration
» Computing Policies UNIX System and Network Administration
» Legal Acts Administration Guidelines
» Code of Ethics Administration Guidelines
» USENIX System Administrators Guild — SAGE
» In This Book UNIX System and Network Administration
» Introduction The Unix Model — Selected Topics
» Access Classes File ProtectionFile Access
» Default File Mode File ProtectionFile Access
» Plain Regular File Socket Named Pipe
» Special File Names Special File Creation
» Process Types Process Attributes
» Process Life Cycles Processes
» System V ATT Flavored ps Command
» Destroying Processes The UNIX kill command will eliminate a process entirely:
» Becoming a Superuser Communicating with Other Users
» The man Command UNIX Online Documentation
» The uptime Command The uptime command displays:
» Personal Documentation UNIX Administration Starters
» Shell Script Execution UNIX Shell Scripts
» Shell Variables UNIX Shell Scripts
» Double Command−Line Scanning
» Introductory Notes System Startup and Shutdown
» The Bootstrap Program System Startup
» The Kernel Execution System Startup
» System States System Startup
» The Outlook of a Startup Procedure
» Initialization Scripts System Startup
» The BSD rc Scripts BSD Initialization Sequence
» BSD−Like Initialization System V Initialization
» An Example Shutdown Procedures
» Introduction to the UNIX Filesystem
» System V Filesystem Directory Organization
» Mounting a Filesystem home, users
» Dismounting a Filesystem home, users
» Automatic Filesystem Mounting Removable Media Management
» BSD Filesystem Configuration File
» Filesystem Types A Few Other Filesystem Issues
» Swap Space — Paging and Swapping
» Loopback Virtual Filesystem A Few Other Filesystem Issues
» Display Filesystem Statistics: The df Command
» Checking Filesystems: The fsck Command
» Introduction UNIX Filesystem Layout
» Disk Partitions Physical Filesystem Layout
» Filesystem Structures Physical Filesystem Layout
» The mkfs Command Filesystem Creation
» File Identification and Allocation
» File Storage vs. File Transfer
» Reserved Free Space Filesystem Performance Issues
» Logical Volume Manager — AIX Flavor
» Logical Volume Manager — Solaris Flavor
» Redundant Array of Inexpensive Disks RAID
» The Volume Snapshot Snapshot
» The Filesystem Snapshot Snapshot
» Virtual UNIX Filesystem Logical Filesystem Layout
» Disk Space Upgrade UNIX Filesystem Layout
» User Database — File etcpasswd
» Initialization Template Files UNIX Login Initialization
» User Login Initialization Files
» Systemwide Login Initialization Files
» Restricted User Accounts Users and Secondary Groups
» Assigning User Passwords Standard UNIX Users and Groups
» Managing Disk Usage by Users
» System V Accounting Accounting
» AIX−Flavored Accounting Accounting
» Physical Security Passwords UNIX Lines of Defense
» File Permissions UNIX Lines of Defense
» Backups Password Encryption UNIX Lines of Defense
» Setting Password Restrictions UNIX Lines of Defense
» The Wheel Group Secure Terminals — Other Approaches
» History of the Root Account Tracking User Activities
» The syslogd Daemon The Concept of System Logging
» The Configuration File etcsyslog.conf
» Linux Logging Enhancements The logger Command
» Testing System Logging System Logging Configuration
» The last Command Limiting the Growth of Log Files
» BSD Printing Subsystem UNIX Printing Subsystem
» The lp, lpstat, and cancel Commands
» The etcprintcap File BSD Printer Configuration and the Printer Capability Database
» Filters BSD Printer Configuration and the Printer Capability Database
» The Printer Database Directory Hierarchy on System V
» Setting a Remote Printer on HP−UX
» BSD and AIX Cross−Printing Solaris and BSD Cross−Printing
» Third−Party Printer Spooling Systems
» The tput Command The tset, tput, and stty Commands
» The stty Command The tset, tput, and stty Commands
» The tar Command Tape−Related Commands
» The cpio Command Tape−Related Commands
» The dd Command Tape−Related Commands
» The mt Command Magnetic Tape Devices and Special Device Files
» The SVR3 and SVR4 backup Commands
» The fbackup Command Backup and Dump Commands
» The dumpufsdump Command Backup and Dump Commands
» Interactive Restore The restore Commands
» The frecover Command Restoring Files from a Backup
» Tape Control UNIX Backup and Restore
» The NTP Daemon Network Time Distribution
» The crontab Files Network Time Distribution
» The crontab Command Network Time Distribution
» Linux Approach Network Time Distribution
» Programs Scheduled for a Specific Time
» UNIX and Networking Network Fundamentals
» TCPIP and the Internet ISO OSI Reference Model
» TCPIP Protocol Architecture Computer Networks
» Internet Protocol IP Internet Layer and IP Protocol
» Network Access Layer Transport Layer and TCP and UDP Protocols
» Application Layer TCPIP Layers and Protocols
» IP Address Classes Data Delivery
» Dynamic Routing Internet Routing
» Protocols, Ports, and Sockets
» UNIX Database Files Multiplexing
» The arp Command Address Resolution ARP
» The portmapper Daemon The etcrpc File
» The ifconfig Command Configuring the Network Interface
» The netstat Command Configuring the Network Interface
» The inetd Daemon Super Internet Server
» Further Improvements and Development
» Host Names and Addresses Domain Name Service DNS
» The Local Host Table — etchosts
» Handling the NIC Host Table — A Journey into the Past
» Other Resolver Parameters BIND Configuration
» Name Servers UNIX Name Service — BIND
» The Configuration File etcnamed.boot
» The named.local File The named.cache file
» Subdomains and Parenting BIND Version 8.X.X
» The nslookup Interactive Mode
» A Few Examples of nslookup Usage
» Purpose and Concepts Network Information Service NIS
» To Create an NIS Client NIS Domain Name
» The etcnetgroup File DatabasesNIS Maps
» Security Issues NIS Management
» The showmount Command Mounting Remote Filesystems
» An Example The Automount Maps
» The rlogin Command The rcp Command
» The HOME.rhosts File Using UNIX r−Commands — An Example
» SSH Configuration Secure Shell SSH
» Root Access SSH Installation and User Access Setup
» SSH — Version 2 Secure Shell SSH
» Simple Mail Transport Protocol SMTP
» Rewriting an E−mail Address Pattern Matching
» Address Transformation The Parsing of E−mail Addresses
» Testing Rewrite Rules The sendmail −bt Command
» The Debugging Level Checking the Mail Queue
» Mail Subcommands The Mail Program and .mailrc File
» POP Transactions Post Office Protocol POP
» Internet Message Access Protocol IMAP
» Finger Common UNIX Network Applications
» The ping Command Host Connectivity
» The traceroute Command Host Connectivity
» The X Administration Philosophy
» Window Managers An Introduction to the X Window System
» xdm Configuration Files The X Display Managers
» Vendor−Specific X Flavors — a Configuration Example
» XDMCP Queries The Xaccess File
» Other Access Control Mechanisms
» Components of the xdm−Based User X Environment
» Other Startup Methods The User X Environment
» A Permanent X11 Installation
» Introduction to Kernel Reconfiguration
» Kernel Configuration Database Kernel Reconfiguration
» The config Command BSD−Like Kernel Configuration Approach
» HP−UX 10.x Kernel Configuration
» UNIX and Modems Introduction to Modems
» Terminal Lines and Modem Control
» C−Kermit Third−Party Communication Software
» UUCP Versions UUCP Chat−Transfer Session
» The UUCP Daemons UUCP Commands, Daemons, and Related Issues
» The UUCP Spool Directories and Files
» Additional Security in BNU UUCP
» Additional Security in Version 2 UUCP
» Intranet vs. Internet Introduction to Intranet
» Intranet Design Approach Introduction to Intranet
» Life Cycle of a Virus Virus Types
» The Viruswall Implementation Viruswalls
» Application Proxies SOCKS Proxies
» Web Services Intranet Front−End Services
» Other External Services Intranet Front−End Services
» Network Infrastructure and Desktops
» Dynamic Host Configuration Protocol DHCP
» UNIX and Not−UNIX Platform Integration
» HP−UX Installation UNIX Installation Procedures
» Linux Installation UNIX Installation Procedures
» Solaris Patch Installation HP−UX Patch Installation
» Solaris and Lost Root Password HP−UX and Lost Root Password
» Solaris Procedure to Create an Alternate Boot Partition
» Solaris Recovery of the Failed Mirrored Boot Disk
Show more