从 SSH 远程会话在本地打印机上打印

从 SSH 远程会话在本地打印机上打印

我遇到了以下问题。我的正常工作文件位于可以通过 SSH 连接的远程计算机上。我希望能够从远程计算机在本地打印机上进行打印,而无需打印到文件,然后将文件 scp 到本地计算机。

我需要的是一个可以在远程机器上调用的脚本或程序,它可以接受文件作为参数(或者从 stdin 读取输入,这并不重要),并且以某种方式在本地机器上执行 lpr。

限制:1) 本地计算机未运行 SSH 服务器。因此,我无法编写脚本将文件 scp 回本地计算机并远程执行 lpr。

2)本地机器上没有邮件服务器,所以我无法通过电子邮件发送文件,并在本地进行过滤。

两台机器都运行 Linux,并有各种常规程序,我可以运行自己的脚本并编译程序。有什么想法吗?

答案1

假设您的本地 Linux 服务器运行打印服务器,您可以使用 ssh 端口转发来使其工作......

  1. 在您的本地机器上,您需要一个配置为使用 lpr 协议接受远程打印请求的打印服务器。
  2. 当您连接到远程服务器时,将其添加到您的 ssh 命令行:-R 515:localhost:515
    这将导致 ssh 监听远程服务器上的 tcp 端口 515,并通过 ssh 隧道将所有连接转发到本地计算机。到达那里后,连接将转发到本地主机(即您的打印服务器)的端口 515。
  3. 在指向 localhost:515 的远程计算机上配置一个打印队列。

如果远程服务器已经运行打印服务器,我相信可以更改端口以防止冲突。

答案2

我找到了我需要的程序:细菌耐药性利用反向端口转发允许在本地计算机上执行各种命令。它没有很好的文档记录,特别是对安装做出了严格的假设,在我的例子中,它对 shell 初始化文件所做的默认更改与其他地方对 TERM 变量的处理相冲突,但源代码是不言自明的,并且易于修改。

答案3

通过 VT100 控制代码打印,您可以通过这些命令将 PostScript 或其他二进制文件推送回本地打印机,您的客户端可能会有所不同。

Some terminals support local printing:
Print Screen        <ESC>[i
Print the current screen.
Print Line      <ESC>[1i
Print the current line.
Stop Print Log      <ESC>[4i
Disable log.
Start Print Log     <ESC>[5i
Start log; all received text is echoed to a printer.

http://www.termsys.demon.co.uk/vtansi.htm#printing

相关内容