通过SSH捕获vncserver执行的输出

时间:2014-07-28 00:32:40

标签: bash parsing ssh vnc

我正在尝试自动启动远程计算机上的VNC服务器(我由登录服务器自动定向)并在Bash中连接它。

这个想法是通过SSH执行VNC服务器启动命令。解析此命令的输出以获取VNC服务器的详细信息,然后建立与VNC服务器的连接。

我很难捕获VNC服务器启动命令的输出,并欢迎任何简化或改进方法的建议。

通过SSH远程执行的VNC服务器启动命令如下:

ssh user1@lxplus.cern.ch 'vncserver'

这将产生如下输出:

New 'lxplus0180.cern.ch:2 (user1)' desktop is lxplus0180.cern.ch:2

Starting applications specified in /afs/cern.ch/user/u/user1/.vnc/xstartup
Log file is /afs/cern.ch/user/u/user1/.vnc/lxplus0180.cern.ch:2.log

我可以通过以下方式解析此输出:

echo "${response}" | sed '/New.*desktop.*is/!d' | awk -F" desktop is " '{print $2}'

这将产生如下内容:

lxplus0180.cern.ch:2

然后可以使用此信息建立VNC连接。

如何记录此响应以便我可以解析它?是否有更有效的方法来解析此信息(可能为了连接命令vncviewer而在冒号之前添加空格)?通常有一种更简单的方法可以做我想做的事情吗?

1 个答案:

答案 0 :(得分:0)

VNC服务器启动事件将输出传递给标准错误输出流。这可以通过以下方式在变量中捕获:

VNCServerResponse="$(ssh "${address1}" 'vncserver' 2>&1)"