手上有一个打印机,它的位置有点尴尬,没法连接网线。打印机也是不支持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
。
- 重启 CUPS 服务:
- 保存并关闭文件。
- 在终端中输入
sudo systemctl restart cups
来重启 CUPS 服务。
- 确保防火墙允许访问:
- 如果您的 Ubuntu 系统运行的是防火墙(如 UFW),您需要允许 631 端口的流量。
- 可以通过命令
sudo ufw allow 631
来实现。
- 从另一台电脑访问:
- 在另一台电脑的浏览器中,输入
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 打印机,您可以使用以下方法:
- 使用命令行: 打开终端(可以通过按下
Ctrl + Alt + T
快捷键),然后使用以下命令之一来查看已连接的打印机:lsusb
: 此命令会列出所有连接的 USB 设备,包括打印机。查找包含打印机制造商名称的行。dmesg | grep usb
: 这个命令会显示 USB 设备的日志信息,包括打印机。
- 使用图形界面:
- 打开“设置” -> “打印机”。
- 在这里,您可以看到所有已添加的打印机,包括通过 USB 连接的打印机。
- 使用 CUPS 网页界面:
- 打开浏览器,访问
http://localhost:631
。这是 CUPS 打印系统的网页界面。 - 在“打印机”部分,您可以看到所有已配置的打印机。
- 打开浏览器,访问
这些方法应该能帮助您查看在 Ubuntu 系统中通过 USB 连接的打印机。如果打印机是新连接的,您可能需要先安装相应的驱动程序或让系统自动检测并安装。
我:我想帮这个 http://localhost:631 可以在另外一台电脑访问,如何操作
ChatGPT:
要使 CUPS 网页界面 http://localhost:631
能够从另一台电脑访问,您需要进行一些配置更改以允许远程访问。请按照以下步骤操作:
- 编辑 CUPS 配置文件:
- 打开终端。
- 输入
sudo nano /etc/cups/cupsd.conf
来编辑 CUPS 的配置文件。这可能需要您输入密码。
- 修改配置以允许远程访问:
- 在
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
仅允许本地网络中的设备访问)。
- 在
- 重启 CUPS 服务:
- 保存并关闭文件。
- 在终端中输入
sudo systemctl restart cups
来重启 CUPS 服务。
- 确保防火墙允许访问:
- 如果您的 Ubuntu 系统运行的是防火墙(如 UFW),您需要允许 631 端口的流量。
- 可以通过命令
sudo ufw allow 631
来实现。
- 从另一台电脑访问:
- 在另一台电脑的浏览器中,输入
http://[您的Ubuntu电脑的IP地址]:631
。例如,如果您的 Ubuntu 电脑的 IP 地址是192.168.1.5
,那么您应该输入http://192.168.1.5:631
。
- 在另一台电脑的浏览器中,输入
请注意,允许从任何计算机访问您的 CUPS 网页界面可能会带来安全风险。确保您的网络是安全的,或者仅在需要时才启用远程访问。
我:如何帮这个打印机共享给Windows用户使用
ChatGPT:
要共享 Ubuntu 系统上的打印机,使 Windows 用户也能使用它,您可以按照以下步骤操作:
- 在 Ubuntu 上配置打印机共享:
- 打开 Ubuntu 的“设置”。
- 选择“打印机”。如果您的打印机已连接并正确设置,它应该出现在这里。
- 选择您要共享的打印机,然后点击“设置”或右键点击打印机,选择“属性”或“共享选项”。
- 找到并勾选“共享这台打印机”或类似选项。
- 安装并配置 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
.
- 在 Windows 上添加网络打印机:
- 在 Windows 计算机上,打开“控制面板” -> “设备和打印机” -> “添加打印机”。
- 选择“添加网络、无线或蓝牙打印机”。
- Windows 将搜索网络
我:我只有命令行访问,如何共享?
ChatGPT:
如果您只能通过命令行访问 Ubuntu 系统,您仍然可以设置打印机共享,以供 Windows 用户使用。这主要涉及配置 CUPS 和 Samba。请按照以下步骤操作:
- 确保 CUPS 已安装并且您的打印机已正确设置:
- 您可以使用
lpstat -p
命令查看当前配置的打印机。
- 您可以使用
- 配置 CUPS 以允许共享:
- 编辑 CUPS 配置文件:
sudo nano /etc/cups/cupsd.conf
- 确保文件中有以下行:cssCopy code
Browsing 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
- 编辑 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
- 安装 Samba(如果尚未安装):
- 在 Windows 上添加网络打印机:
- 在 Windows 计算机上,打开“控制面板” -> “设备和打印机” -> “添加打印机”。
- 选择“添加网络、无线或蓝牙打印机”。
- 输入 Ubuntu 服务器的 IP 地址和打印机名称,格式
我:我没找到你提到的打印机部分 Printer
ChatGPT:
如果您在 CUPS 的配置文件 (/etc/cups/cupsd.conf
) 中没有找到特定的 <Printer your_printer_name>
部分,这意味着打印机的特定配置还没有被定义在该文件中。在这种情况下,您可以通过以下步骤来确保打印机共享:
- 确保 CUPS 配置允许共享:
- 在
cupsd.conf
文件中,确保有以下指令,以便全局地允许共享打印机:cssCopy codeBrowsing On BrowseOrder allow,deny BrowseAllow all DefaultAuthType Basic
- 如果您想要确保所有打印机默认都是共享的,可以添加或确保以下行存在:yamlCopy code
DefaultShared Yes
- 保存并退出文件。
- 重启 CUPS 服务:
sudo systemctl restart cups
- 在
- 通过 CUPS 管理界面或命令行设置打印机为共享:
- 如果您可以访问 CUPS 的网页界面 (
http://localhost:631
或其他配置的地址),您可以在那里设置打印机为共享。在“打印机”部分,选择您的打印机,然后找到共享选项并启用它。 - 或者,使用命令行设置打印机为共享。您可以使用
lpadmin
命令来修改打印机设置。例如,要设置名为PrinterName
的打印机为共享,您可以使用:vbnetCopy codesudo lpadmin -p PrinterName -o printer-is-shared=true
- 使用
lpstat -p
命令检查打印机的状态和共享状态。
- 如果您可以访问 CUPS 的网页界面 (
- 接下来,按照前面提到的步骤配置 Samba:
- 修改 Samba 配置文件
/etc/samba/smb.conf
,按照前面提到的步骤添加[printers]
部分。 - 重启 Samba 服务。
- 修改 Samba 配置文件
- 在 Windows 上添加打印机:
- 在 Windows 机器上按照前面描述的步骤添加网络打印机。
确保在整个过程中,您的 Ubuntu 机器和 Windows 机器都在同一网络内,且 Ubuntu 机器的防火墙设置允许 Samba 和 CUPS 相关的端口(如 139, 445, 631 等)的通信。
我:我想帮这个samba服务提供的打印机映射出去给我这个网段外部的用户使用,我应该在路由器上映射哪些端口和协议
ChatGPT:
要将 Samba 服务提供的打印机映射给外部网络的用户,您需要在您的路由器上设置端口转发。这通常涉及到以下几个步骤:
- 确定 Ubuntu 服务器的内部 IP 地址:
- 在 Ubuntu 服务器上,您可以使用
ip addr
命令来查找 IP 地址。
- 在 Ubuntu 服务器上,您可以使用
- 了解 Samba 使用的端口:
- Samba 通常使用以下端口:
- TCP 139 (NetBIOS Session Service)
- TCP 445 (Microsoft-DS)
- UDP 137 (NetBIOS Name Service)
- UDP 138 (NetBIOS Datagram Service)
- Samba 通常使用以下端口:
- 在路由器上设置端口转发:
- 登录到您的路由器的管理界面。
- 找到端口转发或类似的部分。这通常在“高级设置”、“安全设置”或“网络设置”中。
- 设置端口转发规则,将上述端口从外部网络(互联网)转发到您的 Ubuntu 服务器的内部 IP 地址。确保 TCP 和 UDP 端口都被正确设置。
- 注意安全性:
- 公开 Samba 端口到互联网可能带来安全风险。确保您的 Samba 配置是安全的,并考虑使用 VPN 或其他安全措施来保护您的网络。
- 还要确保 Ubuntu 服务器上的防火墙允许来自这些端口的入站流量。
- 外部用户连接打印机:
- 外部用户将需要使用您公网 IP 地址和正确的端口来连接到您的 Samba 打印服务。公网 IP 地址可以通过在 Ubuntu 服务器上访问像是
whatismyip.com
这样的网站来找到。 - 在设置打印机时,他们将需要输入类似于
\\[您的公网IP]\[打印机名称]
的路径。
- 外部用户将需要使用您公网 IP 地址和正确的端口来连接到您的 Samba 打印服务。公网 IP 地址可以通过在 Ubuntu 服务器上访问像是
请牢记,将内部服务(如文件和打印共享)暴露给互联网会增加安全风险。确保您了解这些风险并采取适当的安全措施。如果可能,建议使用 VPN 而非直接暴露服务。