编写bash脚本以将其远程连接到电话

时间:2018-08-20 19:19:57

标签: bash shell

我有几个要执行的bash命令,希望能得到一些帮助来编写脚本以在可能的情况下用一个脚本执行它们。

在一个控制台上,我想执行命令iproxy 2222 22。然后控制台将打印waiting for connection

我将不得不打开另一个控制台来执行命令ssh -p2222 root@localhost。远程拨打电话后,我想执行一个简单的命令,例如ls

我一直无法打开第二个控制台并执行命令。

有人可以给我一些提示吗?

谢谢

1 个答案:

答案 0 :(得分:1)

您在这里有几件事:

  1. 首先,要在同一脚本中同时运行iproxyssh,而不必使用两个不同的控制台,则需要了解如何在后台运行命令。只需在命令末尾附加&,即可轻松完成此操作。在下一个示例中,iproxy命令将在后台运行,而ssh命令将在前台同时运行:

    iproxy 2222 22 &

    ssh -p2222 root@localhost

  2. 然后,要在由ssh命令打开的远程shell上执行命令,只需将其包括在ssh调用的最后一部分中。下一个示例将打开与root@localhost上的port 2222的SSH连接,然后将在远程shell中执行ls命令,最后将关闭SSH连接:

    ssh -p2222 root@localhost ls

  3. 最后,要启动一个新终端并在其中执行命令(或脚本),您只需使用-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"