我有几个要执行的bash命令,希望能得到一些帮助来编写脚本以在可能的情况下用一个脚本执行它们。
在一个控制台上,我想执行命令iproxy 2222 22
。然后控制台将打印waiting for connection
。
我将不得不打开另一个控制台来执行命令ssh -p2222 root@localhost
。远程拨打电话后,我想执行一个简单的命令,例如ls
。
我一直无法打开第二个控制台并执行命令。
有人可以给我一些提示吗?
谢谢
答案 0 :(得分:1)
您在这里有几件事:
首先,要在同一脚本中同时运行iproxy
和ssh
,而不必使用两个不同的控制台,则需要了解如何在后台运行命令。只需在命令末尾附加&
,即可轻松完成此操作。在下一个示例中,iproxy
命令将在后台运行,而ssh
命令将在前台同时运行:
iproxy 2222 22 &
ssh -p2222 root@localhost
然后,要在由ssh
命令打开的远程shell上执行命令,只需将其包括在ssh
调用的最后一部分中。下一个示例将打开与root@localhost
上的port 2222
的SSH连接,然后将在远程shell中执行ls
命令,最后将关闭SSH连接:
ssh -p2222 root@localhost ls
最后,要启动一个新终端并在其中执行命令(或脚本),您只需使用-e
选项和命令(或脚本名称)。下一个示例将打开一个新的gnome-terminal
并执行上一个ssh
的示例:
gnome-terminal -e "ssh -p2222 root@localhost ls"
或者,您可以打开新的kconsole
或新的xterm
(或系统中可能已安装的任何其他类型的终端)。
您将注意到终端在执行命令后将自行关闭。如果需要或希望它保持打开状态,则必须根据打开的终端类型来修改呼叫:
xterm
,您需要使用-hold
选项。kconsole
,您需要使用--noclose
选项。gnome-terminal
,这有点棘手。这样做的方法是创建一个配置文件,然后修改配置文件首选项以在命令退出时保留终端,并在调用终端机gnome-terminal --window-with-profile=NAMEOFTHEPROFILE -e command
时引用此配置文件。放在一起,您的脚本应该或多或少像这样:
#!/bin/bash
iproxy 2222 22 &
xterm -hold -e "ssh -p2222 root@localhost ls"