首页 > 系统相关 >【Linux】如何在Linux系统中批量添加打印机呢?

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

时间:2024-12-18 13:54:13浏览次数:3  
标签:打印机 批量 PPD 打印 添加 Linux CUPS

一、背景知识

在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 ',' ' '); do
    sudo lpadmin -p $printer_name -o $option
  done
  # 输出添加结果
  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服务以尝试解决问题。

原创 晓致知 电脑知识

标签:打印机,批量,PPD,打印,添加,Linux,CUPS
From: https://www.cnblogs.com/o-O-oO/p/18614720

相关文章

  • 在 UTM 上安装 Alpine Linux 的步骤
     步骤1:下载AlpineLinux镜像访问AlpineLinux的官方网站:https://alpinelinux.org/downloads/。下载适用于虚拟机的x86_64或aarch64架构的AlpineISO镜像。步骤2:创建虚拟机打开UTM应用,点击右上角的"+"按钮来创建一个新的虚拟机。选择虚拟机类型(例如......
  • 剪映草稿自动化批量导出教程,剪映草稿自动化导出
    如何批量自动导出草稿?1.首先打开芒果速剪 2.导出路径请自行选择文件夹,点击复制,3. 粘贴到统一路径点击保存按钮 4.这里填写导出的草稿数量 5.设置好后点击批量导出草稿6.开始自动化导出草稿,注意这个过程中不要动鼠标和键盘,注意事项:1.点击批量导出按钮后,请不要触......
  • 腾讯通升级版,兼容Linux国产系统,消息与RTX互联互通
    一、腾讯通RTX继续使用面临的挑战自从腾讯通RTX停止更新并下架官网后,企业用户在实际使用中遇到了种种难题,直接影响了日常的沟通与协作效率:●无法适配国产系统与移动端:腾讯通RTX只能运行于Windows和Mac系统,对基于Linux内核的国产操作系统(如银河麒麟、统信UOS)以及移动端设备不支......
  • linux指定特定用户执行命令
    1、编写一个shell脚本[root@server_ipshell]#cattest.sh#!/bin/bashpingwww.baidu.com2、使用www用户去启动这个脚本#nohupsudo-H-uwwwbash-c/home/shell/test.sh&3、你可以看到后台的test.sh程序有两个用户在执行,把root那个进程杀掉就可以了,即使不杀......
  • Linux 网页管理工具cockpit使用
    无意间在网上看到一款使用比较方便的Linux网页管理工具,感觉很强大,对Linux新手很有用。平时centos用的比较多,一下以centos7为例,简单列出部署过程。Cockpit包通常在EPEL仓库中提供,需要先下载epel源yuminstall-yepel-release.noarchyumcleanallyummakecachefastyumin......
  • 常见的Linux系统(以Ubuntu为例)中安装Redis的步骤
    一、安装准备更新系统软件包列表在安装Redis之前,先更新系统的软件包列表,以确保可以获取最新版本的Redis及其依赖项。在终端中执行以下命令:sudoapt-getupdate这个命令会从软件源服务器获取最新的软件包信息,包括软件包的版本、依赖关系等更新内容。安装编译工具和依......
  • 常见的Linux系统下安装分布式消息队列Kafka的详细步骤
    一、安装前提条件Java环境安装Kafka是用Scala编写的,运行在Java虚拟机(JVM)上,所以需要先安装Java。可以通过以下命令检查系统是否已安装Java:java-version如果没有安装,可以根据操作系统的不同,从Oracle官方网站(https://www.oracle.com/java/technologies/javase-downloads.ht......
  • Linux安装Anaconda
    1、下载Anaconda安装脚本这里我们需要在官网上查找自己需要的版本,地址链接在下面:https://repo.anaconda.com/archive/下载之后,将文件移动到服务器上2、安装Anaconda执行命令:chmod755Anaconda3-2020.02-Linux-x86_64.sh赋予脚本执行权限执行命令:./Anaconda3-2020.......
  • Linux系统下安装Flume的详细步骤
    一、环境准备Java环境安装Flume是基于Java开发的,所以需要先安装Java。检查系统是否已经安装Java,可以在终端中输入java-version。如果没有安装,对于Ubuntu系统,可以使用以下命令安装OpenJDK:sudoapt-getupdatesudoapt-getinstallopenjdk-8-jdk对于CentOS系统,可以使用......
  • Linux环境下安装Flink的详细步骤
    一、系统环境准备操作系统要求Flink可以运行在多种操作系统上,如Linux、macOS和Windows。但在生产环境中,Linux是最常用的。确保你的Linux系统安装了必要的软件包,如JavaDevelopmentKit(JDK)。Flink1.11及以上版本要求JDK8或更高版本。可以通过命令java-version来检查系统是......