linux环境下连接windows共享的打印机

首先,我用的是 archlinux 配合 gnome 桌面,最小安装 gnome,几乎不包含任何应用,手动安装 gnome-control-center(设置),设置 依赖 smbclient,因为最小安装,设置中 打印机 显示无法使用,再安装 cups,惠普打印机需要惠普驱动 hplip,所以所有的软件大概是

  • gnome-control-center:设置,含打印机,方便图形化配置
  • smbclient:连接 windows 共享的打印机
  • cups:打印
  • hplip:惠普驱动

注意 archlinux 安装这些软件时,会安装相关依赖,这里不再列出,请自行查找:AUR (en) - Packages

查看ip与测试

首先查看连接打印机并共享的window电脑(简写为 win_print)内网ip:196.168.10.1,需要知道共享时windows的用户名 user_test 和密码 pw_12345678

你有的信息为

  • 196.168.10.1:连接打印机并共享的window电脑内网ip
  • user_test:共享时windows的用户名
  • pw_12345678:共享时windows的密码

直接在linux终端测试,注意此电脑需要与 win_print 在同一网络环境

1
ping 196.168.10.1

可以 ping

然后查看 smb,其中 user_test 为之前的 win_print 的用户名

1
smbclient -L 196.168.10.1 -U user_test

会提示输入密码,即 之前的 win_print 的密码 pw_12345678

如果出现类似以下内容,请继续,否则,我也不知道了……,前面的 ping 以及依赖 smbclient 自行核对安装

1
2
3
4
5
6
7
8
9
10
11
Password for [MYGROUP\3008]:

Sharename Type Comment
--------- ---- -------
ADMIN$ Disk 远程管理
C$ Disk 默认共享
D$ Disk 默认共享
user_test Printer HP LaserJet MFP M227-M231
IPC$ IPC 远程 IPC
print$ Disk 打印机驱动程序
SMB1 disabled -- no workgroup available

添加打印机

gnome 设置里,有打印机选项,如果提示服务不可用,请自行按照自己的系统安装 cups,对于 archlinux 来说

1
sudo pacman -S cups

开启服务

1
sudo systemctl enable --now cups

安装驱动

1
sudo pacman -S hplip

重新打开 设置-打印机

选择添加打印机,输入刚才的找到的ip:196.168.10.1,大概有一个条目显示

1
2
196.168.10.1
服务器需要认证

选择这个,然后会让输入帐号密码,即刚才的windows用户名密码

如果正确,然后可以看到打印机选项,类似如下

1
2
打印机名字
位置://196.168.10.1

选择即可,会让你选择驱动,惠普打印机就是 Hewlett-Packard 厂商,然后选择对应机器的驱动,尽量完全对上,一个都不要错,如果驱动比较少,说明你刚才驱动安装的有问题,添加以后,设置里就有了,我的是 HP LaserJet Pro MFP M227-M231 Postscript

这时候打开cups浏览器端口localhost:631打印机 - CUPS 2.4.1

如果一切正常,这里会显示和 gnome设置 里一样的打印机

测试打印机与踩坑

按理说,这时候打开一个pdf,或者其他的,选择打印,选中刚才的打印机,就可以了,但是会报错,报错信息在这里看

打印机 - CUPS 2.4.1,点击你添加的打印机,里面会有介绍错误信息

错误一

我遇到的第一个错误是,samba相关的,因为archlinux安装的,没有配置文件,按照这里的Samba (简体中文) - ArchWiki,把这个文件 https://git.samba.org/samba.git/?p=samba.git;a=blob_plain;f=examples/smb.conf.default;hb=HEAD,下载到 /etc/samba/smb.conf

错误二

然后又有错误,通知也提示 需要凭证以继续打印

需要先关闭cups,再修改这个文件(因为不关闭,这个文件会变,好像应该修改 /etc/cups/cupsd.conf 具体的我不知道)

1
sudo systemctl stop cups
1
sudo gedit /etc/cups/printers.conf

如果有 AuthInfoRequired none 这一行,改为

1
AuthInfoRequired username,password

没有的话,直接添加这一行

然后

1
sudo systemctl start cups

再打印,应该会提示帐号密码,填写刚才 windows 的帐号密码就可以了,建议选中记住密码,但是注意,如果需要修改密码,

1
seahorse

没有这个软件的话,自己安装,中文名 密码和密钥

错误三

错误二 中的文件其中有一行应该是

1
DeviceURI smb://196.168.10.1/user_test

这个就是 查看ip与测试 这里看到的信息,但是因为各种原因可能有问题,请自己编辑,编辑前请按照错误二先关闭cups


本文作者:yuhldr
本文地址: https://yuhldr.github.io/posts/7d18e834.html
版权声明:转载请注明出处!