网闸管理机疑难问题解决一则

老龙 2月前 213

要把这个问题说清楚,并不容易。

情况是这样的,项目现场高压柜跳闸,高压断电了,经过一天之后,蓄电池耗尽,二次侧的设备也没电停机了,其中包括过正反向隔离装置的网闸两台网闸通讯管理机。如下图黄色圈:

图中黄色圈中的是两台x86的工控机,操作系统为CentOS7.9 x86_64,预装的是minimal,无桌面环境。

这两个工控机:

1、外网机运行南瑞隔离装置发送软件

2、内网机运行南瑞隔离装置接收软件

 

今天早上我远程观察时,猛然发现两台机器的南瑞软件都没在正常运行。检查日志,正好是停电再上电之后,就不工作了。

手动启动程序,报异常:

意思是无法连接x11的桌面,java程序的界面不能显示。

首先我查看环境变量DISPLAY的值,确实是":10"。

 

由于项目现场这两台机器都没有显示器,所以操作系统没有安装桌面环境,但是为了配置,还是装了xvnc+xrdp,作为虚拟的桌面环境。我首先考虑到的是否是xvnc的连接问题,由于报错的时候提示是x11 window server的连接异常,我首先想到的是x11 window server没有安装,它的监听端口是6000开始,而xvnc的监听端口是5900开始,但是他们共享的是一个环境变量:DISPLAY。

 

而DISPLAY的写法是 DISPLAY=:1 或 DISPLAY=:2 或 DISPLAY=:99。

 

后面的数字,表示各自监听的端口偏移地址,比如查看到环境变量 DISPLAY=:2,那么如果是vnc,监听端口就是5902,如果是x11 window桌面,监听端口就是6002。

 

于是,我折腾了一天,尝试了各种测试,安装Xvfb,设置Xvfb的启动端口为 :11,并将这个值设置到环境变量中。启动测试,发现java程序启动正常不报错了,但是因为xrdp连接是xvnc,并不能看到java程序的窗口界面,所以不能修改参数,这个方法不可行,后来发现有个x11vnc的程序,这个看名字好像是x11和vnc之间的桥梁,也做了尝试,还是不能在rdp桌面中看到程序界面。

 

在这个时候,我再认真的观察这个原始的错误信息:

 

Invalid MIT-MAGIC-COOKIE-1 keyException in thread "main" java.awt.AWTError: Can't connect to X11 window server using ':10' as the value of the DISPLAY variable.

 

其实这个信息,我老弟已经提示过,说是不是x11 window证书的问题,但是我还是被x11 window和xvnc之间的区别屏蔽了认知,没有认证考虑这个事情。

 

我在网上搜索各种资料的过程中,发现x11 window也好,还是xvnc也好,要连接桌面的过程需要认证的,这个MIT-MAGIC-COOKIE-1就是认证令牌的key。

 

难道说这个key是错误的?

这个令牌的格式是:

主机名/unix:显示号 MIT-MAGIC-COOKIE-1(令牌名)  54f193be8cc5624074c3e528c6b2d602(令牌值)

难道说用户存储的令牌值变化了?

 

先切换到普通用户,然后运行下面的指令将该令牌值重新添加到用户的上下文中(起到关键作用的黄金指令):

>xauth list $DISPLAY
localhost.localdomain/unix:10  MIT-MAGIC-COOKIE-1  54f193be8cc5624074c3e528c6b2d602
>xauth add localhost.localdomain/unix:10  MIT-MAGIC-COOKIE-1  54f193be8cc5624074c3e528c6b2d602

然后重启java程序,铛铛铛!OK了

 

发送侧软件界面:

接收侧软件界面:

它们终于又开始工作了。

最新回复 (0)
返回
发新帖