Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 通过SSH捕获vncserver执行的输出_Bash_Parsing_Ssh_Vnc - Fatal编程技术网

Bash 通过SSH捕获vncserver执行的输出

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

我正在尝试在远程计算机上自动启动VNC服务器(登录服务器自动将我引导到该计算机)并在Bash中连接到它

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

我很难捕获VNC server start命令的输出,希望您能提出任何简化或改进该方法的建议

通过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
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密钥,这样就不必乱用密码。祝你好运。非常感谢你在这方面的帮助。