【问题标题】:How can I run a shell script on a remote machine with a local Perl program?如何使用本地 Perl 程序在远程机器上运行 shell 脚本?
【发布时间】:2010-11-24 11:17:50
【问题描述】:

我正在编写一个要在与运行 Linux 的计算机联网的 PC 上运行的 Perl 脚本。该脚本必须向 Linux 机器上的一组 shell 脚本提供输入并从其接收结果。我可以从 PC 复制输入文件,甚至可以在 Linux 机器上调用 Perl 脚本,但是当该脚本尝试通过以下方式运行 .sh 文件时:

 system("./shell_script.sh");

它打印以下错误:

 '.' is not recognized as an internal or external command, operable program or batch file.

我的意思是它试图在 Windows 下执行 .sh 文件。那么有没有办法让 PC 告诉 Linux 机器,“嘿,伙计,你自己运行这个”?

谢谢。

【问题讨论】:

  • 一小段示例代码提供一些关于系统调用的上下文可能很有用。
  • 好主意,等一下……

标签: perl


【解决方案1】:

您可以使用Net::SSH::Perl 在远程机器上运行命令/脚本:

use warnings;
use strict;

use Net::SSH::Perl;

my $command = "command";
my $host = "host";
my $user = "username";
my $pass = "password";

my $ssh = Net::SSH::Perl->new( $host );
$ssh->login( $username, $pass );
my($stdout, $stderr, $exit) = $ssh->cmd( $command );

print $stdout;

【讨论】:

    【解决方案2】:

    我认为您想使用Net::SSHExpect 之类的东西登录Linux 机器并运行shell 脚本。 system() 在本地机器上运行;这不是向远程机器发送命令的方法。

    【讨论】:

      猜你喜欢
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 2014-04-14
      • 1970-01-01
      • 2017-02-28
      • 1970-01-01
      • 2018-07-18
      • 1970-01-01
      相关资源
      最近更新 更多