我正在使用perl模块“Expect”来实现交互式会话的自动化。该脚本打算在localhost上生成一个ssh终端(比如说)。所以问题是可以使用两个spawn命令(用于生成两个ssh终端)来自同一个脚本。在这种情况下,两个衍生进程如何共享ssh终端。我发现两个生成的命令实际上共享ssh终端。所以终端上的UI实际上很乱。以上断言是真的吗?
问题1)如果为true,是否有更好的方法来控制生成的进程访问ssh终端。
方案: 1)说perl脚本“demo.pl”有两个spawn命令,它们在本地生成一个ssh终端。 2)生成的进程实际上是共享执行perl脚本的ssh终端。
问题2) 那么有没有办法推出一个全新的ssh终端,而不是使用现有的终端。
答案 0 :(得分:1)
终端模拟器和ssh
是不同的程序。您可以生成单独的终端,每个终端都包含ssh
命令 - 但是从脚本中无法与它们进行交互,因为终端正在处理与其包含的ssh
的通信,而不是将其提供给您脚本。
您的选择是使用Perl小部件包或在“从属”模式下使用终端仿真器(例如,参见-S
的{{1}}选项) - 在任何一种情况下,您都可以需要分别跟踪每个spawnid的输入和输出,并将其指向适当的小部件或模拟器。