我想通过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');
但它并没有真正循环。
提前致谢
答案 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。
&#34;请注意,每个频道中只有一个请求可以成功(cp。&#34; exec&#34;在perlfunc中);如果你想运行一系列命令,请考虑使用shell。&#34;
我希望有所帮助。