perl
  • ssh
  • perl-module
  • 2012-07-23 57 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通常是更好的选择。

    相关问题