Bash 通过SSH捕获vncserver执行的输出
我正在尝试在远程计算机上自动启动VNC服务器(登录服务器自动将我引导到该计算机)并在Bash中连接到它 其思想是通过SSH执行VNC服务器启动命令。解析此命令的输出以获取VNC服务器的详细信息,然后建立到VNC服务器的连接 我很难捕获VNC server start命令的输出,希望您能提出任何简化或改进该方法的建议 通过SSH远程执行的VNC服务器启动命令如下:Bash 通过SSH捕获vncserver执行的输出,bash,parsing,ssh,vnc,Bash,Parsing,Ssh,Vnc,我正在尝试在远程计算机上自动启动VNC服务器(登录服务器自动将我引导到该计算机)并在Bash中连接到它 其思想是通过SSH执行VNC服务器启动命令。解析此命令的输出以获取VNC服务器的详细信息,然后建立到VNC服务器的连接 我很难捕获VNC server start命令的输出,希望您能提出任何简化或改进该方法的建议 通过SSH远程执行的VNC服务器启动命令如下: ssh user1@lxplus.cern.ch 'vncserver' New 'lxplus0180.cern.ch:2 (us
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
VNCServerResponse="$(ssh "${address1}" 'vncserver' 2>&1)"
这将产生如下输出:
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
VNCServerResponse="$(ssh "${address1}" 'vncserver' 2>&1)"
我可以用如下方式解析此输出:
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
VNCServerResponse="$(ssh "${address1}" 'vncserver' 2>&1)"
这将产生如下结果:
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
VNCServerResponse="$(ssh "${address1}" 'vncserver' 2>&1)"
然后可以使用此信息建立VNC连接
如何记录此响应以便对其进行分析?是否有更有效的方法解析此信息(可能在冒号前添加一个空格以用于连接命令
vncviewer
)?一般来说,有没有一种更简单的方法来执行我在这里尝试执行的操作?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
VNCServerResponse="$(ssh "${address1}" 'vncserver' 2>&1)"
你试过ssh吗user1@lxplus.cern.ch“vncserver”| sed'/New.*desktop.*是/!d'| awk'代码>?我希望通过对sed/awk进行一些清理,这会起作用。假设您已经设置了ssh publick密钥,这样就不必乱用密码。祝你好运。非常感谢你在这方面的帮助。