我们可以从同一个期望脚本启动两个ssh终端吗?

时间:2012-04-24 06:31:05

标签: perl perl-module expect

我正在使用perl模块“Expect”来实现交互式会话的自动化。该脚本打算在localhost上生成一个ssh终端(比如说)。所以问题是可以使用两个spawn命令(用于生成两个ssh终端)来自同一个脚本。在这种情况下,两个衍生进程如何共享ssh终端。我发现两个生成的命令实际上共享ssh终端。所以终端上的UI实际上很乱。以上断言是真的吗?

问题1)如果为true,是否有更好的方法来控制生成的进程访问ssh终端。

方案: 1)说perl脚本“demo.pl”有两个spawn命令,它们在本地生成一个ssh终端。 2)生成的进程实际上是共享执行perl脚本的ssh终端。

问题2) 那么有没有办法推出一个全新的ssh终端,而不是使用现有的终端。

1 个答案:

答案 0 :(得分:1)

终端模拟器和ssh是不同的程序。您可以生成单独的终端,每个终端都包含ssh命令 - 但是从脚本中无法与它们进行交互,因为终端正在处理与其包含的ssh的通信,而不是将其提供给您脚本。

您的选择是使用Perl小部件包或在“从属”模式下使用终端仿真器(例如,参见-S的{​​{1}}选项) - 在任何一种情况下,您都可以需要分别跟踪每个spawnid的输入和输出,并将其指向适当的小部件或模拟器。