我正在编写一个小脚本,用于启动与远程机器的'xpra'会话。我很擅长bash脚本编写,所以我想知道是否有人可以帮助我清理一下有关最佳实践的代码。
ssh行是我遇到问题的行,因为我必须在键盘上按CTRL-C才能杀死命令并让它继续 echo“done”。
如何解决这个小问题?
### ###
# syntax: xpra.sh hostmachine command #
## ###
## Wake on LAN host machine.
~/scripts/$1
## Check if online and ssh command.
## Attach xpra client.
while :; do
ping -c 1 $1
if [ $? -eq 0 ]; then
ssh $1 "xpra start :7 && sleep 2 && ("DISPLAY=:7 $2"&) ";
echo "done";
sleep 5;
echo "attaching";
(xpra attach ssh:$1:7 &);
break;
else
echo "host offline";
sleep 180s;
fi
done
答案 0 :(得分:2)
较新版本支持在一个命令中启动远程会话,请尝试:
xpra start ssh://HOST:SSH_PORT/DISPLAY --start-child=xterm
这将
它比依赖“睡眠”的脚本更清晰......
答案 1 :(得分:0)
要么在移动到下一行之前完成ssh行,在这种情况下你所拥有的是正确的;或者你想继续运行下一行,在这种情况下你可以附加一个“&”该行的角色:
ssh $1 "xpra start :7 && sleep 2 && ("DISPLAY=:7 $2"&) " &
(我对你的风格做出的主要评论是用“;”结束你所有的行是不必要的,如果你缩进if
语句的部分,那就更清楚了。)
答案 2 :(得分:-1)
ssh -f $COMMAND
将打开一个ssh会话,询问您的凭据,然后在远程主机上启动命令时进入后台。