2017-03-21 4 views
1

私のコードで以下のステートメントを実行しようとすると、以下のエラーメッセージが表示されます。エラーメッセージのパスが存在しません。以下に示すように、パスは実際には/lib/perl5/site_perl/5.22/Expect.pmにあります。 Perlがパスに "usr"フォルダをどのように追加したかはわかりません。他のコードを実行しているときに同様のエラーメッセージが表示されます。CygwinでNet :: SSH :: Expectを使用しようとすると、「実行できません」ssh「No such file or directory」が表示されるのはなぜですか?

enter image description here

エラーメッセージは、受信:

が/usr/lib/perl5/site_perl/5.22/Expect.pmラインで "SSH" そのようなファイルやディレクトリをexecしていないことはできません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(); 

は以下

enter image description here

+2

Cygwinをインストールしたときにopensshパッケージをインストールしましたか? – ThisSuitIsBlackNot

+0

私はOpenSSHの代わりにNet :: SSH :: Expectを使用しています – Jelani

+0

Net :: SSH :: Expectは、sshプログラムがあなたのPATHにインストールされることを期待しています。 Cygwinのopensshパッケージは、usr/bin/ssh.exeを提供します。 openssh Cygwinパッケージをインストールしたかどうか聞いています。 – ThisSuitIsBlackNot

答えて

2

Net::SSH::ExpectはSSHをインストールする必要があり、私の環境変数は、perlの-Vを使用して示されています。 /またはどちらでもない。

モジュールのdescription州で最初の行:

このモジュールは、お使いのシステムの$ PATHで使用可能ですsshの実行可能ファイルへのラッパーです。

したがって、CygwinのSSHパッケージをインストールする必要があります。

+0

ありがとうございました...それを修正しました...私はperlが必要な依存関係をインストールすると仮定しました。 – Jelani

+1

@ bigtime813通常、互換性の問題やライセンスの問題などの理由で、外部ライブラリをラップするディストリビューションではそうではありません。 – stevieb

+2

Cygwinパッケージマネージャを使用してNet :: SSH :: Expectをインストールした場合、 ssh'(ただし、パッケージャはその依存関係を手動で追加しなければならなかったでしょう)。 Net :: SSH :: Expectを 'cpan' /' cpanm'/etcを通してインストールした場合、依存関係なしで失敗しているはずです(有用なテストがある場合)。 (インストールを強制しましたか?しないでください!!!!!!!) – ikegami

1

私はPerlがCygwinはUNIXエミュレーション環境で

パスに "USR" フォルダを先頭に付加する方法がわからないんです。その中には、UNIXファイルシステムをエミュレートすることも含まれています。 CygwinプログラムはC:ではなく、仮想/ディレクトリを使用します。 C:\cygwin64\lib\perl5\site_perl\5.22\Expect.pmと表示されているものは、/usr/lib/perl5/site_perl/5.22/Expect.pmというcygwin環境で利用できます。

これはあなたの問題とは関係ありません。見つからないのはsshで、/usr/lib/perl5/site_perl/5.22/Expect.pmではありません。

したがって、Cygwinのsetupプログラムを実行し、sshをインストールしてください。

+0

...それを得た... – Jelani

関連する問題