2016-03-22 13 views
2

Net :: SSH :: Perlを使ってログインしたリモートマシンからSSHを実行する必要があります。つまり、以下のコードで 'cmd'が$ ssh-> cmdに渡されました。別のSSH(username @ hostnameと言う)です。この2番目のSSHのパスワードを渡し、この2番目のリモートマシンでコマンドを実行する方法はありますか? また、sshのキーペアログインやsshpassなどのツールも使用できません。助けてもらえますか?perlでSSH内で2番目のSSHを実行する

use Net::SSH::Perl; 

    my $hostname = "hostname"; 
    my $username = "username"; 
    my $password = "password"; 

    my $cmd = <command to be executed on remote machine>; 

    my $ssh = Net::SSH::Perl->new("$hostname", debug=>0); 
    $ssh->login("$username","$password"); 
    my ($stdout,$stderr,$exit) = $ssh->cmd("$cmd"); 
    print $stdout; 
+0

私は関連する質問を思い出します。あなたは本当にこれを行う必要があります、チェーンでssh?なぜホストに戻り、もう一度それをsshしないのですか? – zdim

+0

2番目のリモートマシンへのSSHは、最初のリモートマシンからのみ実行することができます – nebula

+0

参照[再帰的sshコマンドでのbashとperlのクォート](http://stackoverflow.com/questions/23597777/quoting-in-bash-and-perl -in-recursive-ssh-command) –

答えて

2

Net :: SSH :: Perlが大幅に制限されています。可能であれば、代わりにNet::OpenSSHを使用することを提案します。 jump hostを使いやすくするプロキシコマンドとトンネルをサポートしています。

Net :: SSHがあなたの唯一の選択肢である場合は、それを行う唯一の方法は何らかの期待に似た動作を使用することです。 Net :: SSH :: Expect。

関連する問題