2

使用 Expect perl 模块,我编写了在本地主机上使用 ssh 命令来模拟终端的脚本。所以考虑下面的场景,我有一个使用 expect 模块的 perl 脚本(比如 script.pl),并且有两个这种类型的命令

$ssh = Expect->spawn("ssh -Y $loginname\@$systemname") 

所以这里的问题是......我正在使用终端来执行 script.pl 并且我的代码有两个 spawn 命令。我注意到在用于执行 script.pl 的终端中启动了两个 spawn 命令。但我想要两个新终端来执行两个生成命令。所以这里应该有三个终端,一个用于 script.pl,两个用于 script.pl 中的每个 spawn 命令。

有没有办法使用 Expect 从单个 perl 脚本实现两个新终端?

4

1 回答 1

1

“有没有办法使用 Expect 从单个 perl 脚本实现两个新终端??”

当然。但是终端是一个像任何东西一样的应用程序。你必须明确地调用它;你所产卵的只是ssh。终端应用程序是异构的,因此您需要弄清楚系统上正在运行什么终端应用程序以及如何让它在启动时启动应用程序。例如,对于 Xfce 终端,类似于:

$ssh = Expect->spawn("Terminal -e \"ssh -Y $loginname\@$systemname\"");

应该管用。或者也许更好:

$ssh = Expect->spawn("Terminal", ("-e", "ssh -Y $loginname\@$systemname"));

但是,您的终端可能不是 Xfce 终端。如果你在 Windows 上,我相信它是cmd. 在 Linux 上,这取决于安装的内容;如果您使用的是发行版默认值,它将是 DE 附带的终端——gnome-terminal对于 GNOME、konsoleKDE ​​等。

但是,如果您以其他方式自动启动终端并让它们在启动时使用 expect/ssh 执行脚本,这可能更有意义。

于 2012-05-10T07:30:48.910 回答