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

我有以下问题。 我正常的工作文件是在我可以SSH的远程机器上。 我希望能够从本地打印机上的远程机器打印而不必打印到文件,然后scp文件到本地机器。

我需要的是一个脚本或程序,可以在远程机器上调用,接受一个文件作为参数(或从标准input读取,无所谓),并以某种方式在本地机器上执行lpr。

约束:1)本地机器不运行SSH服务器。 因此,我不能有一个脚本,scp的文件回本地机器,并远程执行lpr。

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

这两台机器运行Linux与正常的各种程序,我可以运行我自己的脚本,并编译程序。 有任何想法吗?

假设您的本地linux服务器运行一个打印服务器,您可以使用ssh端口转发使其工作…

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

如果远程服务器已经运行了一个打印服务器,我相信有可能改变端口来防止冲突。

我find了我需要的程序: bcvi利用反向端口转发来允许在本地计算机上执行各种命令。 它没有很好的文档logging,特别是对安装的严重假设,在我的情况下,默认对shell初始化文件进行了修改,与在其他地方处理TERMvariables冲突,但源代码是不言自明的修改。

通过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