为什么我会“不能执行”#s;"没有这样的文件或目录'当我尝试在Cygwin中使用Net :: SSH :: Expect时?

时间:2017-03-21 18:11:21

标签: perl

当我尝试在我的代码中执行以下语句时,我收到以下错误消息。我的错误消息中的路径不存在。如下所示,路径实际位于/lib/perl5/site_perl/5.22/Expect.pm中。我不确定Perl是如何将" usr"路径中的文件夹。我在运行其他代码时收到类似的错误消息。

enter image description here

收到错误讯息:

不能执行" ssh" /usr/lib/perl5/site_perl/5.22/Expect.pm第173行没有这样的文件或目录。

我的代码片段:

$ssh = Net::SSH::Expect->new(
host       => "192.168.1.10",
user       => 'username',
password   => 'password',
raw_pty    => 1,
log_stdout => 1,
no_terminal => 1, 
);
my $login_output = $ssh->login();

以下是使用perl -V

显示的环境变量

enter image description here

2 个答案:

答案 0 :(得分:2)

Net::SSH::Expect需要安装SSH。它不是/或。

模块description中的第一行说明:

  

此模块是系统的$ PATH中可用的ssh可执行文件的包装。

所以你必须安装Cygwin的SSH软件包。

答案 1 :(得分:1)

  

我不确定Perl如何在路径中添加“usr”文件夹

Cygwin是一个unix仿真环境。部分内容包括模拟unix文件系统。 Cygwin程序不使用C:,而是使用虚拟/目录。你所看到的C:\cygwin64\lib\perl5\site_perl\5.22\Expect.pm在cygwin环境中可以/usr/lib/perl5/site_perl/5.22/Expect.pm

这与您的问题无关。找不到ssh,而不是/usr/lib/perl5/site_perl/5.22/Expect.pm

所以运行Cygwin的setup程序并安装ssh