【发布时间】:2014-09-19 03:46:39
【问题描述】:
我正在尝试自动化启动远程计算机上的 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 在冒号前添加一个空格)?通常有一种更简单的方法来做我想做的事情吗?
【问题讨论】:
-
你试过
ssh user1@lxplus.cern.ch 'vncserver' | sed '/New.*desktop.*is/!d' | awk ' ....吗?我希望它能够工作,对 sed/awk 进行一些清理。假设您已设置 ssh 公钥,因此您不必弄乱密码。祝你好运。