我是perl的新手。我正在使用 perl expect 模块来生成远程系统。使用发送模块一个接一个地执行一组命令(比如 $exp->send("my command as string goes here\n")。问题是我执行的命令需要一些时间来处理。在所有之前命令完成远程机器超时,我回到我的主机提示符。你能帮我解决这个问题吗?
我还有一个问题。我有一个命令在执行后返回 2 个值(比如我正在远程机器上打印 2 个值)。我想捕获这两个值并使用发送模块作为参数传递给下一个命令。我该怎么做呢。
请帮我解决这个问题。
谢谢。
我刚刚发现了一些关于期望模块的信息。有一个 undef 选项可以与期望一起使用,例如 $exp->expect(undef)。这将无限期地等待并让所有命令完成它们的处理。但问题是,它不会将控制权返回给主机。还有另一种使用 expect 和 eof 的选项,它将等到遇到 eof 然后返回主机。虽然不知道如何使用它。我发现一个优雅的解决方案是使用 ssh 在远程机器上运行命令,而不是使用期望,在这种情况下我们不必处理超时。:)