我正在尝试自动启动远程计算机上的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
而在冒号之前添加空格)?通常有一种更简单的方法可以做我想做的事情吗?
答案 0 :(得分:0)
VNC服务器启动事件将输出传递给标准错误输出流。这可以通过以下方式在变量中捕获:
VNCServerResponse="$(ssh "${address1}" 'vncserver' 2>&1)"