【问题标题】:capturing output of vncserver execution via SSH通过 SSH 捕获 vncserver 执行的输出
【发布时间】: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 公钥,因此您不必弄乱密码。祝你好运。

标签: bash parsing ssh vnc


【解决方案1】:

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

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

【讨论】:

  • 非常感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-29
相关资源
最近更新 更多