【Linux】如何在Linux系统中批量添加打印机呢?

news/2024/12/18 13:45:22/文章来源:https://www.cnblogs.com/o-O-oO/p/18614720

一、背景知识

在Linux系统中,打印机通常被视为一种输出设备,用于将计算机中的文档或图像打印到纸张上。与Windows系统类似,Linux系统也需要一系列的目录和配置文件来管理打印机,以及一个守护进程来处理打印作业。在办公用的操作系统领域,Windows常年傲视群雄。而近年来,政、企等单位操作系统国产化的进程,让竞争对手Linux的市场份额有所提高——越来越多的政府机构、国有企业都将既有的Windows电脑更换为国产电脑,配备银河麒麟、统信UOS等国产Linux发行版。如何在这些Linux系统中批量添加打印机呢?
图片

二、Linux系统的打印机管理机制

Linux系统的打印机管理机制相对复杂,但通常遵循以下步骤:

检测与识别:当打印机连接到Linux系统时,系统会检测并识别打印机设备。这通常通过USB、网络(如IPP、LPD/LPR、SMB)等连接方式实现。

配置与管理:一旦打印机被识别,用户需要配置打印机的相关信息,如打印机名称、设备URI(统一资源标识符)、PPD文件(PostScript Printer Description,用于描述打印机功能和驱动程序)等。这些信息通常通过打印机管理工具或命令行工具进行设置。

打印作业处理:当用户提交打印作业时,Linux系统会将作业发送到打印机守护进程(如lpd或CUPS的cupsd)。守护进程会接收作业并将其转换为打印机可以理解的格式(如PostScript或PCL),然后将其发送到指定的打印机进行打印。

三、CUPS原理

CUPS(Common Unix Printing System)是一个开源的打印系统,专为支持Unix类系统(包括Linux)而设计。

CUPS的工作原理如下:

接收打印作业:当用户通过打印对话框或命令行工具提交打印作业时,CUPS会接收这些作业并将其存储在打印队列中。

处理打印作业:CUPS会根据打印机的PPD文件和配置信息将打印作业转换为打印机可以理解的格式。这包括选择合适的纸张大小、分辨率、打印质量等参数。
发送打印作业:一旦打印作业被处理为打印机可以理解的格式,CUPS会将其发送到指定的打印机进行打印。如果打印机是网络打印机,CUPS会通过网络协议(如IPP)将作业发送到打印机。

CUPS还提供了Web界面和命令行工具来管理打印机和打印作业,使用户能够轻松地添加、删除、配置打印机以及查看打印队列的状态。

四、安装打印服务

首先,确保Linux系统上安装了CUPS(Common UNIX Printing System)打印服务。CUPS是现代Unix-like系统下的标准打印服务,可以在大多数Linux发行版中找到。

在Debian或Ubuntu系统上,可以使用以下命令安装CUPS:

sudo apt-get update
sudo apt-get install cups

在Red Hat或Fedora系统上,可以使用以下命令:

sudo dnf install cups

安装完成后,启动CUPS服务:

sudo systemctl start cups

五、准备打印机信息

创建一个包含打印机详细信息的文件,例如printers_info.txt。该文件应包含打印机的名称、设备URI、PPD文件路径、位置描述、默认选项等信息。每行一个打印机的信息,格式如下:

打印机名称1|设备URI1|/路径/到/PPD文件1|位置描述1|默认选项1
打印机名称2|设备URI2|/路径/到/PPD文件2|位置描述2|默认选项2
HPLaserJetP3015|socket://192.168.1.100:9100|/usr/share/cups/model/HP/LaserJet_P3005-Postscript.ppd|办公室1|media=a4,duplex=duplexnotumble
HPDeskJet1234|usb://HP/DeskJet_1234?serial=12345678|/usr/share/cups/model/HP/DeskJet_1200_series-ps.ppd|办公室2|media=letter

六、编写Bash脚本进行批量添加

编写一个Bash脚本来读取printers_info.txt文件,并使用lpadmin命令添加打印机,同时配置打印机的位置和默认选项。以下是一个示例脚本:

#!/bin/bash
# 读取打印机信息文件
while IFS='|' read -r printer_name device_uri ppd_file location default_options
do# 使用lpadmin命令添加打印机sudo lpadmin -p $printer_name -E -v $device_uri -m $ppd_file -D "$location"# 设置打印机的默认选项(可选)# 注意:这里的默认选项需要是lpadmin命令支持的选项格式,具体取决于PPD文件的内容# 例如,如果要设置默认纸张大小为A4,可以这样做(假设PPD文件中支持A4选项):# sudo lpadmin -p $printer_name -o media=a4# 由于默认选项可能包含多个键值对,这里需要更复杂的处理逻辑# 为了简化示例,这里只展示如何设置单个选项(如果有多个选项,可以逐行添加)# 假设default_options变量中包含了以逗号分隔的键值对,例如"media=a4,duplex=duplexnotumble"for option in $(echo $default_options | tr ',' ' '); dosudo lpadmin -p $printer_name -o $optiondone# 输出添加结果echo "已添加打印机:$printer_name,位置:$location,设备URI:$device_uri,PPD文件:$ppd_file"
done < printers_info.txt

七、运行脚本并验证

给脚本添加执行权限,并运行脚本以批量添加打印机:

chmod +x add_and_configure_printers.sh
./add_and_configure_printers.sh

运行脚本后,使用lpstat -p命令查看当前系统中配置的所有打印机的状态,确保打印机已成功添加并配置了默认选项。

八、打印测试页

在CUPS的Web界面(通常可以通过http://localhost:631访问)中,找到新添加的打印机,并点击“Print Test Page”按钮进行打印测试。确保打印机能够正常工作并打印出测试页。

九、故障排除

如果在添加或配置打印机过程中遇到问题,可以按照以下步骤进行故障排除:

检查打印机连接:确保打印机已正确连接到计算机或网络,并且处于工作状态。

检查CUPS服务:确保CUPS服务正在运行。可以使用sudo systemctl status cups命令检查CUPS服务状态。

检查PPD文件:确保PPD文件路径正确,并且PPD文件与打印机型号相匹配。

查看日志:查看CUPS的日志文件(通常位于/var/log/cups/目录下),以获取有关添加或配置打印机时的错误消息。

取消打印任务:如果打印任务卡住,可以使用sudo cancel -a命令取消所有打印任务,并重启CUPS服务以尝试解决问题。

原创 晓致知 电脑知识

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/854779.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ABB喷涂机器人ACU 3HNA024871-001维修

ABB喷涂机器人ACU 3HNA024871-001在以下情况下可能会出现气压异常: - 气压要求变化:如果气压要求从8巴降至6巴,这可能会导致气压异常。 - 设备故障:如果ACU设备本身出现故障,例如内部压降问题或者闭环调节系统出现问题,也可能导致气压异常。 - 维护不当:如…

Z-BlogPHP 报错“error-9 该文章不存在或设置了权限”,如何解决?

当您在使用 Z-BlogPHP 时遇到“error-9 该文章不存在或设置了权限”的错误,通常是因为文章的状态被更改或设置了访问权限。以下是一些解决此问题的方法:检查文章状态:确认文章的状态是否为已发布。如果文章被设置为草稿或其他未发布的状态,非作者或管理员账号将无法访问。 …

Z-BlogPHP 报错“主题模板的编译文件不存在”,如何解决?

当您在使用 Z-BlogPHP 时遇到“主题模板的编译文件不存在”的错误,通常是因为系统未能正确编译主题模板文件,导致无法正常显示网站内容。以下是一些解决此问题的方法:清空缓存并重新编译模板:登录 Z-BlogPHP 后台管理界面,进入首页。 在首页中,找到并点击“清空缓存并重新…

UniApp小程序开发避坑事项

首次使用UniApp及其UI进行小程序开发,记录项目中需要注意事项,方便以后避坑^_^! 1、uni-forms的使用,如果需要自定义校验,uni-forms上不能绑定rules,需要在data中定义rules,然后在onReady中将uni-forms与rules绑定。<uni-forms ref="valiForm" :modelValue=…

探索全新摸鱼世界,【摸鱼办】一站式轻松解决打工人在线摸鱼的秘密武器!

你好,摸鱼人!👨‍💻 工作再忙,一定不要忘记摸鱼哦 🐟! 有事没事起身去茶水间 ☕️,去厕所 🚾,去走廊走走 🚶,去找同事聊聊八卦 🆕!别老在工位上坐着,钱是老板的 👨‍💼 但命是自己的 🤷‍♂️。00. 什么是【摸鱼办】? 摸鱼办是一款专为上班族打造的…

C10-8 SQL注入II + XSS练习 I

情境参加了培训的第八次课, 涉及到了SQL宽字节注入, 从MySQL注入到GetShell, SQL注入的基本绕过手法, SQL注入防御, SQLmap的使用; XSS基本概念和原理 的介绍(包括3种XSS及其手动测试). 这里是第八课的作业题, 及我的解答. (注: 使用本地虚拟机开启dvwa靶场, 10.0.0.155是ubunt…

【流量分析】基于安全产品DNS隧道流量分析

免责声明 本文仅限于技术讨论与分享,严禁用于非法途径。若读者因此作出任何危害网络安全行为后果自负,与本号及原作者无关。域名准备 选择哪家的云都没问题,这里我选择的TX云,因为之前注册过了,自己拿来做个流量分析不成问题。 域名添加解析记录 需要准备自己的vps作为DNS…

14伪元素-CSS的继承和层叠-元素特性

一、之前剩下的东西 上节讲解了CSS常见的选择器:通用选择器,元素选择器,类选择器,id选择器,属性选择器,组合选择器,伪类选择器 之前讲到伪类选择器非常多,但是使用的却不多,上次主要讲到动态伪类,其中:hover最重要。 1、伪元素pseudo-elements 常用的伪元素是: :fir…

分享一个线程状态

本文来自博客园,作者:Eular,转载请注明原文链接:https://www.cnblogs.com/euler-blog/p/18614627

Bootstrap popover功能扩展jquery插件

这是一款Bootstrap popover功能扩展jquery插件。该jquery插件在原生Bootstrap popover功能的基础上,添加了一些新的功能,例如自动定位,支持情景模式等。在线演示 下载使用方法 在页面中引入jquery和bootstrap相关文件,以及bootstrap-popover-x.css和bootstrap-popover-x.j…

大学微积分 AB 第四单元:区分的语境应用

(先略)根据上下文解释导数的含义 定的。

欢迎 PaliGemma 2 – 来自 Google 的新视觉语言模型

我们很高兴迎来 Google 全新的视觉语言模型 PaliGemma 2,这是 PaliGemma 的一个新版本。与其前代产品一样,PaliGemma 2 使用强大的 SigLIP 进行视觉处理,但在文本解码部分升级到了最新的 Gemma 2。 模型规模和输入分辨率 PaliGemma 2 提供了新的预训练模型,参数规模包括 3B…