【问题标题】:Unable to continue perform perl script after ssh to another unix domainssh 到另一个 unix 域后无法继续执行 perl 脚本
【发布时间】:2013-03-28 17:42:40
【问题描述】:

在这里遇到一个问题,需要大家帮忙

我正在编写一个将在 UNIX 机器上执行的 perl 脚本。在该脚本中,我将执行“ssh”操作以移植到其他 Unix 域(从 A ssh 到 B)。现在的问题是,在我移植到域 B 之后,我仍然需要从 perl 脚本执行一些操作(例如:echo Hello World!)。这里的问题是在移植到新的 unix 域之后,无法执行“ssh”之后的以下脚本,因为该脚本仍在“旧域”上。无论如何,这是解决这个问题还是有更好的方法来实现相同的目标?

【问题讨论】:

    标签: perl unix ssh


    【解决方案1】:

    您可以使用Expect module 打开一个 SSH 连接并通过 Perl 对其执行命令。

    如果您需要除此之外的帮助,则必须更具体地说明您正在尝试做什么。您可能有错误的设计来解决您的任务。

    【讨论】:

    • 我的意思是 'ssh' 命令在 perl 脚本中。例如:系统“ssh xxxxxxx”;系统“回声你好世界”; echo 部分无法执行,因为 ssh 之后,脚本可以继续执行。
    • 表示你正在尝试在远程服务器上执行 echo "hello world"?
    • 是的,没错!我的想法是系统ssh到远程服务器后,它无法继续执行以下命令,因为脚本不在远程服务器中。知道如何解决这个问题吗?感谢您的帮助
    • @user2218886,我提到的模块正好解决了您遇到的问题。您不能使用system 打开 SSH 连接,因为您需要通过 SSH 进行双向通信才能执行命令。 Expect 模块执行此操作。单击链接并查看文档中的示例。
    【解决方案2】:

    尝试这样做:

    ssh <servername> "echo 'hello world'";
    

    还可以使用 -t 选项检查 ssh。要检查此 echo 命令是否在服务器或 localhost 上运行,请尝试其他命令,例如 ls"。

    注意::脚本终止时,ssh 连接将关闭。

    【讨论】:

      猜你喜欢
      • 2017-06-14
      • 2015-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-12
      • 1970-01-01
      相关资源
      最近更新 更多