Perl - 循环SSH命令,逐行变量

时间:2015-02-16 02:02:45

标签: perl ssh

我想通过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');

但它并没有真正循环。

提前致谢

1 个答案:

答案 0 :(得分: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

&#34;请注意,每个频道中只有一个请求可以成功(cp。&#34; exec&#34;在perlfunc中);如果你想运行一系列命令,请考虑使用shell。&#34;

我希望有所帮助。