/usr/share/perl5/Rex/Interface/Shell.pm is in rex 1.4.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | #
# (c) Jan Gehring <jan.gehring@gmail.com>
#
# vim: set ts=2 sw=2 tw=0:
# vim: set expandtab:
package Rex::Interface::Shell;
use strict;
use warnings;
our $VERSION = '1.4.1'; # VERSION
use Rex::Logger;
my %SHELL_PROVIDER = (
ash => "Rex::Interface::Shell::Ash",
bash => "Rex::Interface::Shell::Bash",
csh => "Rex::Interface::Shell::Csh",
idrac => "Rex::Interface::Shell::Idrac",
ksh => "Rex::Interface::Shell::Ksh",
sh => "Rex::Interface::Shell::Sh",
tcsh => "Rex::Interface::Shell::Tcsh",
zsh => "Rex::Interface::Shell::Zsh",
);
sub register_shell_provider {
my ( $class, $shell_name, $shell_class ) = @_;
$SHELL_PROVIDER{"\L$shell_name"} = $shell_class;
return 1;
}
sub get_shell_provider {
return %SHELL_PROVIDER;
}
sub create {
my ( $class, $shell ) = @_;
$shell =~ s/[\r\n]//gms; # sometimes there are some wired things...
my $klass = "Rex::Interface::Shell::\u$shell";
eval "use $klass";
if ($@) {
Rex::Logger::info(
"Can't load wanted shell: '$shell' ('$klass'). Using default shell.",
"warn" );
Rex::Logger::info(
"If you want to help the development of Rex please report this issue in our Github issue tracker.",
"warn"
);
$klass = "Rex::Interface::Shell::Default";
eval "use $klass";
}
return $klass->new;
}
1;
|