当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 从 Linux 打印到 Windows 共享打印机

作者:精品下载站 日期:2024-12-14 01:52:09 浏览:14 分类:玩电脑

从 Linux 打印到 Windows 共享打印机


本文介绍如何从 Linux 计算机连接到连接到 Windows 主机的共享打印机并进行打印。

  1. 第一步是在所连接的 Windows 计算机上共享打印机。打开打印机属性,进入共享选项卡,启用共享这台打印机选项,并指定共享打印机名称(名称不得包含空格或特殊字符);

    [玩转系统] 从 Linux 打印到 Windows 共享打印机

  2. 创建一个新的本地用户winusr1。从本地Users组中删除用户,将密码设置为永不过期,并防止密码更改。

    [玩转系统] 从 Linux 打印到 Windows 共享打印机

    您可以使用 PowerShell 创建具有指定设置的本地用户:

    $pass = ConvertTo-SecureString "pass2024W0rd-" -AsPlainText -Force
    New-LocalUser -Name winusr1 -Password $pass -PasswordNeverExpires -UserMayNotChangePassword
    Remove-LocalGroupMember -Group Users -Member winusr1

默认情况下,SMB 协议用于连接共享 Windows 打印机。安装 smbclient 以检查是否可以从 Linux 远程访问 Windows 主机上的共享打印机:

在 Ubuntu/Debian 上运行命令:

$ sudo apt install smbclient

列出远程 Windows 计算机上的 SMB 共享

$ smbclient -L \192.168.31.94 -U winusr1
  • 192.168.31.94 - Windows 计算机的 IP 地址或主机名

  • winusr1 - 本地 Windows 用户名

[玩转系统] 从 Linux 打印到 Windows 共享打印机

此命令列出共享网络文件夹(包括管理共享)和打印机。

从控制台,您可以检查 SMB 打印机的可用性并发送文件进行打印:

$ smbclient -W DOMAIN -U winusr1//192.168.31.94/HPM1530

打印指定文件:

smb: \> print /home/sysops/test.txt
printing file test.txt as test.txt (856,2 kb/s)
smb: \> quit

在 Linux 下访问和管理网络打印机的最简单方法是使用内置的通用 UNIX 打印系统 (CUPS)。 system-config-printer Web 界面用于管理 CUPS。

CUPS 和 system-config-printer 默认安装在大多数 Linux 桌面发行版上。必要时检查并安装:

$ dpkg -l cups
$ dpkg -l system-config-printer
$ systemctl status cups

现在从 Linux 连接共享网络打印机:

  1. 在浏览器中导航到以下 URL 以打开 CUPS Web 界面

    localhost:631

    ;

  2. 进入管理 -> 添加打印机 -> 其他网络打印机 -> 通过 SAMBA 的 Windows 打印机

    [玩转系统] 从 Linux 打印到 Windows 共享打印机

  3. 使用以下格式指定共享打印机连接设置

    smb://winusr1:[email /HPM1530

    (此字符串包括用户名和密码、远程 Windows 主机名/IP 和共享打印机名称);

    [玩转系统] 从 Linux 打印到 Windows 共享打印机

  4. 然后设置打印机名称和描述;

    [玩转系统] 从 Linux 打印到 Windows 共享打印机

  5. 接下来,CUPS 将要求您选择打印机制造商和型号。驱动程序的列表可能会很长。使用以下命令可以根据打印机型号快速查找驱动程序名称:

    $ lpinfo -m| grep 1536

    [玩转系统] 从 Linux 打印到 Windows 共享打印机

    选择您在 CUPS 中找到的驱动程序。

    [玩转系统] 从 Linux 打印到 Windows 共享打印机

  6. 共享打印机安装完成。

在哪里可以找到适用于 Linux 的 CUPS 打印驱动程序?以 HP 打印机为例,大多数 Linux 发行版都预装了 HP Linux 打印和成像系统 (HPLIP) 软件包。它包含适用于大多数 HP 打印机的驱动程序。

$ dpkg -l hplip

[玩转系统] 从 Linux 打印到 Windows 共享打印机

您可以手动安装 HPLIP 包:

$ sudo apt install hplip hplip-gui

其他供应商也可能发布类似的驱动程序包,或者您也许能够找到针对特定打印机的预构建 PPD 文件。还可以使用 foomatic PPD 打印机驱动程序库(自动安装在 ubuntu-desktop 上):

$ apt install foomatic-db-compressed-ppds

在我的例子中,第一次尝试将文档从 Linux 打印到共享 Windows 打印机失败,并出现错误。检查 /var/log/cups/error_log 是否有错误:

E [Job 13] SMB connection failed!
E [Job 13] Unable to connect to CIFS host: NT_STATUS_IO_TIMEOUT

[玩转系统] 从 Linux 打印到 Windows 共享打印机

这表明 CUPS 无法连接到 Windows 计算机上打印机的 SMB 文件夹。在这种情况下,问题在于Linux smbclient尝试使用SMB 1.0协议访问共享打印机。 SMB 1.0版本在Windows 10和11上被禁用,这样的连接将被拒绝。

编辑文件 /etc/samba/smb.conf 以使 Linux SMB 客户端使用更安全的 SMB 2 或 3 版本进行连接。在 [global] 部分中,添加以下行:

client min protocol = SMB2
client max protocol = SMB3

[玩转系统] 从 Linux 打印到 Windows 共享打印机

重新启动 CUPS:

$ sudo systemctl restart cups

Linux 客户端现在可以成功打印到 Windows 计算机上的共享打印机。

您还可以从命令行连接到共享 Windows 打印机。第一步是找到适合您的打印机型号的驱动程序名称:

$ lpinfo --make-and-model '1536' -m

复制驱动程序的全名并连接 SMB 打印机:

$ sudo lpadmin -p HP1536mfp -v smb://winusr1:[email /HPM1536 -m postscript-hp:0/ppd/hplip/HP/hp-laserjet_m1530_mfp_series-ps.ppd

在 Linux 上启用 CUPS 打印机:

$ cupsenable HP1536mfp

列出打印机:

$ lpsatat -v
$ lpstat -p

[玩转系统] 从 Linux 打印到 Windows 共享打印机

连接的 SMB 打印机列表存储在 /etc/cups/printers.conf 文件中。请注意,用于连接打印机的 Windows 用户名和密码以纯文本形式存储在此处(因此该用户必须在 Windows 计算机上拥有最低权限)。

[玩转系统] 从 Linux 打印到 Windows 共享打印机

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯