【问题标题】:Perl - Loop SSH command with line by line variablePerl - 使用逐行变量循环 SSH 命令
【发布时间】:2015-02-16 23:19:24
【问题描述】:

我想通过 SSH 运行命令并使其循环,直到我的变量读取文件中的所有行。

我有这个:

$channel = $ssh->channel();
$channel->exec('echo -n "$command"') 
$channel->exec('rest of commands')

我需要做的是在循环中运行 echo 命令,变量是本地文件 /home/variables 中的每一行。

它应该一直循环echo 命令,直到我的文件中的所有行都完成后,它才会移动到脚本的其余部分。

我想我应该使用类似的东西:

open my $enable, '<', '/home/variables';

while (my $command = <$enable>) {
chomp $command;
$channel->exec("echo -n $command");
last;
$channel->exec('next command');

虽然它并不是真正的循环。

提前致谢

【问题讨论】:

    标签: perl ssh


    【解决方案1】:

    试试这个:

    #-- creating a channel
    my $channel = $ssh->channel();
    $channel->shell();
    
    open my $enable, '<', 'x1';
    
    while (my $command = <$enable>) {
      $channel->write( $command );
      }
    
    $channel->write( $final_command );
    

    还要注意,每个命令后都需要换行符,所以我省略了 chomp。

    来自Net::SSH2 documentation :

    "请注意,每个通道中只有一个请求可以成功(cp. "exec" in perlfunc);如果您想运行一系列命令,请考虑使用 shell。"

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-05
      • 2017-05-11
      • 1970-01-01
      • 2021-11-08
      相关资源
      最近更新 更多