Press "Enter" to skip to content

Ubuntu系统下使用命令行帮一个usb连接的打印机共享到内网里面去

手上有一个打印机,它的位置有点尴尬,没法连接网线。打印机也是不支持WiFi的,它只支持连接以太网或者usb连接。

手上有个X86小机器,他有usb口和无线网卡,我帮设备安装了Ubuntu系统,尝试用这个Ubuntu系统帮打印机共享出来。

查看打印机

lsusb
Bus 002 Device 003: ID 03f0:242a HP, Inc HP Color LaserJet Pro MFP M176n
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 002: ID 0bda:8179 Realtek Semiconductor Corp. RTL8188EUS 802.11n Wireless Network Adapter
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

可以看到,系统已经认到我插的USB打印机了。

root@HP-Z620-Workstation:/home/caizhongzhen# lpstat -p
printer HP-Color-LaserJet-Pro-MFP-M176n is idle.  enabled since 2024年01月17日 星期三 19时32分39秒

使用lpstat -p命令也能看到我们的打印机正常识别,现在只要帮他共享出去即可。

我们可以通过 http://localhost:631/服务来访问到一个web的打印机管理界面的,我们现在想远程访问这个页面,可以通过下面配置实现。

vim /etc/cups/cupsd.conf
  • cupsd.conf 文件中,找到 Listen localhost:631 或者 Port 631 行,并替换为 Listen 0.0.0.0:631。这将使 CUPS 监听所有网络接口上的 631 端口。
  • 找到 <Location /><Location /admin> 这两个部分。在这两个部分中,您需要确保有一行 Allow from all
  1. 重启 CUPS 服务:
    • 保存并关闭文件。
    • 在终端中输入 sudo systemctl restart cups 来重启 CUPS 服务。
  2. 确保防火墙允许访问:
    • 如果您的 Ubuntu 系统运行的是防火墙(如 UFW),您需要允许 631 端口的流量。
    • 可以通过命令 sudo ufw allow 631 来实现。
  3. 从另一台电脑访问:
    • 在另一台电脑的浏览器中,输入 http://[您的Ubuntu电脑的IP地址]:631。例如,如果您的 Ubuntu 电脑的 IP 地址是 192.168.1.5,那么您应该输入 http://192.168.1.5:631

共享打印机

编辑 /etc/cups/cupsd.conf

确保配置文件中有下面的行

Browsing On
BrowseOrder allow,deny
BrowseAllow all
BrowseRemoteProtocols CUPS
DefaultAuthType Basic

保存配置重启服务:systemctl restart cups

安装并配置 Samba:

  • 安装 Samba(如果尚未安装):sudo apt-get install samba
  • 编辑 Samba 配置文件:sudo nano /etc/samba/smb.conf
  • [global] 部分,确保以下行存在或添加它们:javaCopy code[global] workgroup = WORKGROUP security = user passdb backend = tdbsam printing = cups printcap name = cups load printers = yes cups options = raw
  • 添加打印机部分:javaCopy code[printers] comment = All Printers browseable = no path = /var/spool/samba printable = yes guest ok = yes read only = yes create mask = 0700
  • 保存并退出文件。
  • 重启 Samba 服务:sudo systemctl restart smbd

好了,你成功了,下面在window系统正常添加打印机即可,理论上添加打印机是可以直接识别到的,也可通过ip手动添加。

我是和GPT问答实现的,下面是问答存档。

我:在ubuntu系统里面如何查看usb连接的打印机

ChatGPT:

在 Ubuntu 系统中查看已连接的 USB 打印机,您可以使用以下方法:

  1. 使用命令行: 打开终端(可以通过按下 Ctrl + Alt + T 快捷键),然后使用以下命令之一来查看已连接的打印机:
    • lsusb: 此命令会列出所有连接的 USB 设备,包括打印机。查找包含打印机制造商名称的行。
    • dmesg | grep usb: 这个命令会显示 USB 设备的日志信息,包括打印机。
  2. 使用图形界面:
    • 打开“设置” -> “打印机”。
    • 在这里,您可以看到所有已添加的打印机,包括通过 USB 连接的打印机。
  3. 使用 CUPS 网页界面:
    • 打开浏览器,访问 http://localhost:631。这是 CUPS 打印系统的网页界面。
    • 在“打印机”部分,您可以看到所有已配置的打印机。

这些方法应该能帮助您查看在 Ubuntu 系统中通过 USB 连接的打印机。如果打印机是新连接的,您可能需要先安装相应的驱动程序或让系统自动检测并安装。

我:我想帮这个 http://localhost:631 可以在另外一台电脑访问,如何操作

ChatGPT:

要使 CUPS 网页界面 http://localhost:631 能够从另一台电脑访问,您需要进行一些配置更改以允许远程访问。请按照以下步骤操作:

  1. 编辑 CUPS 配置文件:
    • 打开终端。
    • 输入 sudo nano /etc/cups/cupsd.conf 来编辑 CUPS 的配置文件。这可能需要您输入密码。
  2. 修改配置以允许远程访问:
    • cupsd.conf 文件中,找到 Listen localhost:631 或者 Port 631 行,并替换为 Listen 0.0.0.0:631。这将使 CUPS 监听所有网络接口上的 631 端口。
    • 找到 <Location /><Location /admin> 这两个部分。在这两个部分中,您需要确保有一行 Allow @LOCAL 或者 Allow from all(这取决于您希望的安全级别,Allow from all 将允许任何人访问,而 Allow @LOCAL 仅允许本地网络中的设备访问)。
  3. 重启 CUPS 服务:
    • 保存并关闭文件。
    • 在终端中输入 sudo systemctl restart cups 来重启 CUPS 服务。
  4. 确保防火墙允许访问:
    • 如果您的 Ubuntu 系统运行的是防火墙(如 UFW),您需要允许 631 端口的流量。
    • 可以通过命令 sudo ufw allow 631 来实现。
  5. 从另一台电脑访问:
    • 在另一台电脑的浏览器中,输入 http://[您的Ubuntu电脑的IP地址]:631。例如,如果您的 Ubuntu 电脑的 IP 地址是 192.168.1.5,那么您应该输入 http://192.168.1.5:631

请注意,允许从任何计算机访问您的 CUPS 网页界面可能会带来安全风险。确保您的网络是安全的,或者仅在需要时才启用远程访问。

我:如何帮这个打印机共享给Windows用户使用

ChatGPT:

要共享 Ubuntu 系统上的打印机,使 Windows 用户也能使用它,您可以按照以下步骤操作:

  1. 在 Ubuntu 上配置打印机共享:
    • 打开 Ubuntu 的“设置”。
    • 选择“打印机”。如果您的打印机已连接并正确设置,它应该出现在这里。
    • 选择您要共享的打印机,然后点击“设置”或右键点击打印机,选择“属性”或“共享选项”。
    • 找到并勾选“共享这台打印机”或类似选项。
  2. 安装并配置 Samba:
    • 打开终端。
    • 安装 Samba(如果还未安装):输入 sudo apt-get install samba
    • 编辑 Samba 配置文件:输入 sudo nano /etc/samba/smb.conf
    • [printers] 部分,确保以下选项被设置:javaCopy code[printers] comment = All Printers browseable = yes path = /var/spool/samba printable = yes guest ok = yes read only = yes create mask = 0700
    • 保存并关闭文件。
    • 重启 Samba 服务:输入 sudo systemctl restart smbd.
  3. 在 Windows 上添加网络打印机:
    • 在 Windows 计算机上,打开“控制面板” -> “设备和打印机” -> “添加打印机”。
    • 选择“添加网络、无线或蓝牙打印机”。
    • Windows 将搜索网络

我:我只有命令行访问,如何共享?

ChatGPT:

如果您只能通过命令行访问 Ubuntu 系统,您仍然可以设置打印机共享,以供 Windows 用户使用。这主要涉及配置 CUPS 和 Samba。请按照以下步骤操作:

  1. 确保 CUPS 已安装并且您的打印机已正确设置:
    • 您可以使用 lpstat -p 命令查看当前配置的打印机。
  2. 配置 CUPS 以允许共享:
    • 编辑 CUPS 配置文件:sudo nano /etc/cups/cupsd.conf
    • 确保文件中有以下行:cssCopy codeBrowsing On BrowseOrder allow,deny BrowseAllow all BrowseRemoteProtocols CUPS DefaultAuthType Basic
    • 并且,确保您的打印机部分包含 Shared Yes。例如:phpCopy code<Printer your_printer_name> Shared Yes ... </Printer>
    • 保存并退出文件。
    • 重启 CUPS 服务:sudo systemctl restart cups
  3. 安装并配置 Samba:
    • 安装 Samba(如果尚未安装):sudo apt-get install samba
    • 编辑 Samba 配置文件:sudo nano /etc/samba/smb.conf
    • [global] 部分,确保以下行存在或添加它们:javaCopy code[global] workgroup = WORKGROUP security = user passdb backend = tdbsam printing = cups printcap name = cups load printers = yes cups options = raw
    • 添加打印机部分:javaCopy code[printers] comment = All Printers browseable = no path = /var/spool/samba printable = yes guest ok = yes read only = yes create mask = 0700
    • 保存并退出文件。
    • 重启 Samba 服务:sudo systemctl restart smbd
  4. 在 Windows 上添加网络打印机:
    • 在 Windows 计算机上,打开“控制面板” -> “设备和打印机” -> “添加打印机”。
    • 选择“添加网络、无线或蓝牙打印机”。
    • 输入 Ubuntu 服务器的 IP 地址和打印机名称,格式

我:我没找到你提到的打印机部分 Printer

ChatGPT:

如果您在 CUPS 的配置文件 (/etc/cups/cupsd.conf) 中没有找到特定的 <Printer your_printer_name> 部分,这意味着打印机的特定配置还没有被定义在该文件中。在这种情况下,您可以通过以下步骤来确保打印机共享:

  1. 确保 CUPS 配置允许共享:
    • cupsd.conf 文件中,确保有以下指令,以便全局地允许共享打印机:cssCopy codeBrowsing On BrowseOrder allow,deny BrowseAllow all DefaultAuthType Basic
    • 如果您想要确保所有打印机默认都是共享的,可以添加或确保以下行存在:yamlCopy codeDefaultShared Yes
    • 保存并退出文件。
    • 重启 CUPS 服务:sudo systemctl restart cups
  2. 通过 CUPS 管理界面或命令行设置打印机为共享:
    • 如果您可以访问 CUPS 的网页界面 (http://localhost:631 或其他配置的地址),您可以在那里设置打印机为共享。在“打印机”部分,选择您的打印机,然后找到共享选项并启用它。
    • 或者,使用命令行设置打印机为共享。您可以使用 lpadmin 命令来修改打印机设置。例如,要设置名为 PrinterName 的打印机为共享,您可以使用:vbnetCopy codesudo lpadmin -p PrinterName -o printer-is-shared=true
    • 使用 lpstat -p 命令检查打印机的状态和共享状态。
  3. 接下来,按照前面提到的步骤配置 Samba:
    • 修改 Samba 配置文件 /etc/samba/smb.conf,按照前面提到的步骤添加 [printers] 部分。
    • 重启 Samba 服务。
  4. 在 Windows 上添加打印机:
    • 在 Windows 机器上按照前面描述的步骤添加网络打印机。

确保在整个过程中,您的 Ubuntu 机器和 Windows 机器都在同一网络内,且 Ubuntu 机器的防火墙设置允许 Samba 和 CUPS 相关的端口(如 139, 445, 631 等)的通信。

我:我想帮这个samba服务提供的打印机映射出去给我这个网段外部的用户使用,我应该在路由器上映射哪些端口和协议

ChatGPT:

要将 Samba 服务提供的打印机映射给外部网络的用户,您需要在您的路由器上设置端口转发。这通常涉及到以下几个步骤:

  1. 确定 Ubuntu 服务器的内部 IP 地址:
    • 在 Ubuntu 服务器上,您可以使用 ip addr 命令来查找 IP 地址。
  2. 了解 Samba 使用的端口:
    • Samba 通常使用以下端口:
      • TCP 139 (NetBIOS Session Service)
      • TCP 445 (Microsoft-DS)
      • UDP 137 (NetBIOS Name Service)
      • UDP 138 (NetBIOS Datagram Service)
  3. 在路由器上设置端口转发:
    • 登录到您的路由器的管理界面。
    • 找到端口转发或类似的部分。这通常在“高级设置”、“安全设置”或“网络设置”中。
    • 设置端口转发规则,将上述端口从外部网络(互联网)转发到您的 Ubuntu 服务器的内部 IP 地址。确保 TCP 和 UDP 端口都被正确设置。
  4. 注意安全性:
    • 公开 Samba 端口到互联网可能带来安全风险。确保您的 Samba 配置是安全的,并考虑使用 VPN 或其他安全措施来保护您的网络。
    • 还要确保 Ubuntu 服务器上的防火墙允许来自这些端口的入站流量。
  5. 外部用户连接打印机:
    • 外部用户将需要使用您公网 IP 地址和正确的端口来连接到您的 Samba 打印服务。公网 IP 地址可以通过在 Ubuntu 服务器上访问像是 whatismyip.com 这样的网站来找到。
    • 在设置打印机时,他们将需要输入类似于 \\[您的公网IP]\[打印机名称] 的路径。

请牢记,将内部服务(如文件和打印共享)暴露给互联网会增加安全风险。确保您了解这些风险并采取适当的安全措施。如果可能,建议使用 VPN 而非直接暴露服务。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注