File Coverage

lib/Rex/Group/Lookup/Command.pm
Criterion Covered Total %
statement 14 30 46.6
branch 0 8 0.0
condition 0 6 0.0
subroutine 5 6 83.3
pod 0 1 0.0
total 19 51 37.2


line stmt bran cond sub pod time code
1             #
2             # (c) xiahou feng
3             #
4              
5             =head1 NAME
6              
7             Rex::Group::Lookup::Command - read hostnames from a command.
8              
9             =head1 DESCRIPTION
10              
11             With this module you can define hostgroups out of a command.
12              
13             =head1 SYNOPSIS
14              
15             use Rex::Group::Lookup::Command;
16              
17             group "dbserver" => lookup_command("cat ip.list | grep -v -E '^#'");
18              
19             rex xxxx # dbserver
20              
21             =head1 EXPORTED FUNCTIONS
22              
23             =cut
24              
25             package Rex::Group::Lookup::Command;
26              
27 1     1   14 use v5.12.5;
  1         4  
28 1     1   6 use warnings;
  1         2  
  1         51  
29              
30             our $VERSION = '1.14.2.2'; # TRIAL VERSION
31              
32             require Rex::Exporter;
33 1     1   6 use Rex -base;
  1         2  
  1         4  
34              
35 1     1   8 use base qw(Exporter);
  1         3  
  1         68  
36 1     1   6 use vars qw(@EXPORT);
  1         3  
  1         265  
37              
38             @EXPORT = qw(lookup_command);
39              
40             sub lookup_command {
41 0     0 0   my $command = shift;
42              
43 0           my $command_to_exec;
44             my @content;
45              
46 0 0 0       if ( defined $command && $command ) {
47 0           $command_to_exec = $command;
48 0           Rex::Logger::info("Command: $command");
49             }
50              
51 0 0 0       unless ( defined $command_to_exec && $command_to_exec ) {
52 0           Rex::Logger::info("You must give a valid command.");
53 0           return @content;
54             }
55              
56 0           eval {
57 0 0         open( my $command_rt, "-|", "$command_to_exec" ) or die($!);
58 0           @content = grep { !/^\s*$|^#/ } <$command_rt>;
  0            
59 0           close($command_rt);
60              
61 0           chomp @content;
62             };
63 0 0         Rex::Logger::info("You must give a valid command.") unless $#content;
64 0           return @content;
65             }
66              
67             1;