perl
  • ssh
  • perl-module
  • 2012-07-23 74 views 2 likes 
    2

    多個命令,我是新來這個模塊。我試過一個示例程序,它工作正常。但是,現在,我想我怎麼在這個方案執行多個命令:執行使用的Net :: SSH :: Perl模塊,

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

    你有沒有打過電話'$ SSH-> cmd'幾次? – simbabque 2012-07-23 19:25:44

    +1

    也許有點跛,但你總是可以串聯在一行中的所有命令,並把在$ CMD – 2012-07-23 19:32:16

    回答

    0

    你可以叫cmd屢。

    您面臨的問題可能是,每個命令都在不同的shell中運行,並且因其或export運行副作用的命令變得毫無用處。

    這樣的工作,你可以周圍所有的前綴與cd $dir命令的命令。例如:

    my ($stdout1, $stderr1, $exit1) = $ssh->cmd("cd /$dir && $cmd1"); 
    my ($stdout2, $stderr2, $exit2) = $ssh->cmd("cd /$dir && $cmd2"); 
    ... 
    

    另一種方法是運行在遠程主機上殼和交談,但是,這個是比較困難的,而且容易出錯。

    最後,Net :: SSH :: Perl是舊的,沒有維護,現在,Net::SSH2Net::OpenSSH通常是更好的選擇。

    相關問題