企业网站建设目的选择题银行营销技巧和营销方法
背景
平时主力机器是Windows,不想额外开一个Linux服务器来共享打印机。由于主力机平时也不关机,尝试在Windows上安装CUPS服务。
结论
先说结论,结论是可行,但是麻烦且不稳定,虚拟机方案少折腾,但是资源消耗大,WSL次之,最后是Docker方案。
技术难点
- 应用软件层面
 
- CUPS在Windows上没有找到可行的方案。因此得在Linux中安装CUPS。 
- (Windows的自带的共享打印机服务楼主按照各种教程实践没能成功开启)
 
 
- 硬件层面
 
- USB打印机可以直接接入Windows,但是虚拟机、WSL和Docker无法直接使用USB设备。
 
- 系统持久化
 
- 让打印机服务开机就可以自动启动,无需后续手动开启。
 
- 网络层面
 
- Windows主机到虚拟机/Docker主机/WSL主机的端口映射。
 
硬件问题思路
CUPS直接在Windows运行貌似不太可行
 大体上应该有三种方式:
- 虚拟机 
- 以 VMWare为例,安装CentOS 7 后,安装LPR和CUPS驱动。
 - 把打印机的USB接口直接接入虚拟机中。
 
 - WSL 
- 驱动安装与虚拟机一致。
 - USB接口映射需要依赖 
USBIP工具。下载地址:https://github.com/dorssel/usbipd-win - 大体上分为两步: 
- 通过bind命令把指定USB端口共享出去
 - 通过attach,通过网络共享该USB接口。
 
 - 缺点 
- 梯子可能导致失效
 - 重启后失效
 
 
 - Docker 
- 很遗憾,Docker并不能像虚拟机一样直接做到USB端口映射,也需要依赖USBIP工具。 
- 如果host和容器设备都是Linux是可以的,但是由于Win和Linux的USB接口实现方式差异太大,Docker没能做到直接映射。
 
 
 - 很遗憾,Docker并不能像虚拟机一样直接做到USB端口映射,也需要依赖USBIP工具。 
 
持久化问题思路
- 设置计划任务 
- 触发时机:启动时
 - 权限:管理员权限
 - 命令记得带参数
 
 
网络层面思路
- 使用Windows主机的端口映射命令。
netsh interface portproxy add v4tov4 listenport=<监听端口> listenaddress=<监听地址> connectport=<目标端口> connectaddress=<目标地址>- 例如:
netsh interface portproxy add v4tov4 listenport=631 listenaddress=0.0.0.0 connectport=631 connectaddress=192.168.1.100 - host主机的631端口映射到内部主机的631端口。
 - host端监听所有可用的网络接口。0.0.0.0 意味着无论是本地网络接口还是外部网络接口,任何连接到该主机的631端口请求都可以被接受。
 - 虚拟机/WSL主机/Docker主机的IP为192.168.1.100,端口为631。
 
 - 例如:
 - 允许win防火墙通过631端口 
netsh advfirewall firewall add rule name="CUPS Printer" dir=in action=allow protocol=TCP localport=631
 
