让Unix服务器运行结果异地显示

在现实工作中 , 系统工程师往往会遇到企业员工各种各样的需求 。前段时间 , 就有企业向笔者提出 , 要求某个应用程序在服务器上运行 , 但是结果却要在异地的客户端上显示 。如下图所示 , 员工可以通过网络向Unix服务器的某个应用软件发送相关的参数 。然后服务器利用这个软件进行相关的计算与处理 。等到有结果后 , 再把相关的结果发送到客户端 。如有些应用软件可能计算分析的时间比较长 , 员工无法在那边等待结果 。为此他们就希望服务器把结果运算出来后就直接返回到他们的客户端 , 他们就可以不用在服务器旁边等着出结果了 。
一、通过X客户端来解决这个需求 。
在Unix操作系统中提供了一个叫做X客户端的程序 。它本来是一个仿Windows的管理环境 , 但是功能却比其要强的多 。如其在网络上运行就比Windows系统要出色的多 。为什么这么说呢?这主要是因为X客户端程序可以在一个终端上运行一个客户端程序 , 而在另一个终端上输出它的运行结果 。也就是说 , X客户端程序可以让应用软件的计算结果重定向到另外一个客户端中 。这对于控制运行结果的显示具有非常大的作用 。如通过这个X客户端程序 , 本文一开始提到的用户需求就引刃而解了 。
那么该如何实现呢?一般情况下 , 需要在客户端与服务器端分别进行设置 。下面笔者就对这些设置过程进行详细的阐述 , 以帮助大家以后有需要时能够参考这篇文章顺利实现这个配置 。
二、接收客户端的相关配置 。
假设现在有一个复杂的密码破解器 。由于版权、安全或者服务器性能方面的限制 , 其只能够运行在一台特定的主机上面 。其他员工需要使用这个软件的话 , 必须到这个服务器上去运行 。但是由于运行的时间比较长 , 为此员工也不可能在服务器旁边等待 。为此就必须在一个远程计算机上运行这个客户端程序 , 然后把结果返回到本地的主机上 。但是并不是所有的主机都可以接受到这个结果 。如果有些员工搞恶作剧 , 把一些不雅的内容通过这个X客户端重续输出到所有的本地电脑上 , 那么就会引起员工的不满 。为此系统工程师必须先在本地客户端上进行设置 , 让其允许接收来自于其他主机的输出结果 。
也就是说本地服务程序必须允许其他的计算机在本地的显示终端上输出结果 。要实现这个目的的话 , 就需要采用xhost命令 。如可以在本地客户端上运行xhostserver1命令 。就表示运行主机名字为server1的上的任何用户都可以往这台客户端上输出运行结果 。注意 , 客户端在判断是否允许其他主机往本机上输出运行结果 , 其标准是主机的名字 , 而不是用户名 。如允许server1主机向本地输出结果的话 , 则如果这台主机上设置有20个用户名 , 则都允许其向本机输出结果 。这一点系统工程师在具体配置的时候 , 一定要注意 。另外如果采用xhost命令 , 即没有在 号后面跟主机名字的话 , 则表示允许任何远程机器往这台主机上输出运行结果 。如果以后要取消这个设置的话也很简单 , 如只需要采用xhost –命令就可以取消相关的设置 。
三、在远程机器上设置输出的目标 。
在客户端设置允许接收远程机器的输出结果之后 , 还需要在远程机器上使用重定向功能把客户端程序的运行结果输出到另一个终端屏幕上 。要实现这个需求的话 , 方法还是比较多的 。笔者在这里介绍最常用的几种方法 。
1、如果只有某个特定的客户端程序需要把运行结果输出到其它主机的屏幕上 , 则笔者建议在客户端程序那边使用-display选项 。在Unix服务器中每个X客户端程序都有这个选项 。这个可选项的参数是完整的显示名称 。如假设现在需要把名字为passwdpk的应用程序结果重定向到其他客户端的屏幕上 , 则可以利用passwdpk –display 显示的客户端主机名:终端参数(终端参数的格式为服务器号.屏幕号) 。如此的话 , 这台主机就会自动把passwdpk的运行结果传输到远程的主机上去 。不过需要注意的是 , 这个可选项只对当前运行的passwdpk应用程序有效 。这是什么意思呢?假设现在有四个程序在运行 , 那么此时操作系统只会把passwdpk应用程序的结果重定向到远程的客户端(假设只有这个程序在运行的时候采用了-display可选项) , 而其他应用程序的结果仍然显示在这台主机上 。如果系统工程师希望所有程序的运行结果都输出到特定的客户端上 , 那么就需要在启动每个应用程序的时候都带上这个可选项 。显然当应用程序比较多的时候 , 这会比较麻烦 。为此如果系统工程师有很多客户端程序需要在远程计算机上运行而它们的运行结果都需要输出到本地的终端上 , 那么最好使用第二种方法 , 即设置display环境变量来实现 。

推荐阅读