在远程工作时,我会在gnome-terminal中打开一系列选项卡,并执行命令。我希望将所有这些设置自动化为单个命令。
如果这些命令可以独立并行运行,我只需根据this question的答案进行调整。实际上,我尝试过使用以下shell脚本:
第一部分打开一个标签页,命名为“gate”,并在其中执行“ssh gate_tunnel”。这是一个ssh别名,它通过学校面向外部的服务器“gate”打开到学校“mydesktop”的隧道。
第二部分打开另一个标签页,命名为“mydesktop”,并在其中执行“ssh tunneled_mydesktop”。这是另一个ssh别名,它通过隧道连接到我的桌面电脑。
这是理论。实际上,这两个命令并行执行,而我需要确保第一个选项卡的命令(打开隧道)在执行第二个选项卡的命令(通过隧道连接)之前完成。
也许在第二个选项卡中有一些命令可以执行,等待ssh隧道打开?
如果这些命令可以独立并行运行,我只需根据this question的答案进行调整。实际上,我尝试过使用以下shell脚本:
gnome-terminal --working-directory="/home/superelectric" --tab -t "gate" -e 'bash -c "export BASH_POST_RC=\"ssh gate_tunnel\"; exec bash"' --tab -t "mydesktop" -e 'bash -c "export BASH_POST_RC=\"ssh tunneled_mydesktop\"; exec bash"'
为了可读性而分布在多行中:
gnome-terminal \
--working-directory="/home/superelectric" \
--tab \
-t "gate" \
-e \
'bash -c "export BASH_POST_RC=\"ssh gate_tunnel\"; exec bash"' \
--tab \
-t "mydesktop" \
-e \
'bash -c "export BASH_POST_RC=\"ssh tunneled_mydesktop\"; exec bash"'
第一部分打开一个标签页,命名为“gate”,并在其中执行“ssh gate_tunnel”。这是一个ssh别名,它通过学校面向外部的服务器“gate”打开到学校“mydesktop”的隧道。
第二部分打开另一个标签页,命名为“mydesktop”,并在其中执行“ssh tunneled_mydesktop”。这是另一个ssh别名,它通过隧道连接到我的桌面电脑。
~/.ssh/config:
Host gate_tunnel
LocalForward 8023 <my_desktop_at_school>:22
HostName <my_school_server>
这是理论。实际上,这两个命令并行执行,而我需要确保第一个选项卡的命令(打开隧道)在执行第二个选项卡的命令(通过隧道连接)之前完成。
也许在第二个选项卡中有一些命令可以执行,等待ssh隧道打开?