App-Tel
view release on metacpan or search on metacpan
lib/App/Tel.pm view on Meta::CPAN
return shift->session->send(@_);
}
=head2 expect
$self->expect("text");
Wrapper for Expect's expect() method.
=cut
sub expect {
return shift->session->expect(@_);
}
=head2 load_config
Loads the config from /etc/telrc, /usr/local/etc/telrc, $ENV{HOME}/.telrc2, or
it can be appended to by using the environment variable TELRC, or overridden
by calling load_config with an argument:
$self->load_config('/home/user/.my_custom_override');
=cut
sub load_config {
my $self = shift;
my $xdg = $ENV{XDG_CONFIG_HOME} || "$ENV{HOME}/.config/";
my @configs = @_;
@configs = ( "/etc/telrc", "/usr/local/etc/telrc", "$ENV{HOME}/.telrc2", "$xdg/telrc") if (!@configs);
push(@configs, $ENV{TELRC}) if (defined($ENV{TELRC}));
our $telrc;
my $config;
foreach my $conf (@configs) {
if (-r $conf) {
require $conf;
push(@{$config->{'telrc_file'}}, $conf);
$config = merge($config, $telrc);
}
}
if (!defined($config->{'telrc_file'})) {
warn "No configuration files loaded. You may need to run mktelrc.";
}
# load global syntax highlighting things if found
$self->{colors}->load_syntax($config->{syntax});
$self->{config} = $config;
return $self;
}
=head2 hostname
$hostname = $self->hostname("hostname");
Called to parse the hostname provided by the user when first making a
connection. If the hostname has special attributes like a port designation,
it's parsed here.
This also looks up the profile for the hostname to see if it needs to be
translated because of an alias. The final hostname is stored and returned.
=cut
sub hostname {
my ($self, $hostname) = @_;
if (!defined($hostname)) {
return $self->{hostname};
}
$hostname =~ s#/tftpboot/##;
$hostname =~ s/-confg//;
if ($hostname =~ qr@(ssh|telnet)://\[([a-zA-Z0-9\-\.\:]+)\](?::(\d+))?@) {
$self->{port} = $3 if ($3);
$self->methods($1);
$hostname = $2;
} elsif ($hostname =~ qr@(ssh|telnet)://([a-zA-Z0-9\-\.]+)(?::(\d+))?@) {
$self->{port} = $3 if ($3);
$self->methods($1);
$hostname = $2;
} elsif ($hostname =~ /\[(\S+)\](?::(\d+))?/) {
$self->{port} = $2 if ($2);
$self->methods('telnet') if ($2);
$hostname = $1;
} elsif (($hostname =~ tr/://) < 2 && $hostname =~ /(\S+):(\d+)$/) {
$self->{port} = $2;
$self->methods('telnet');
$hostname = $1;
}
# load profile based on the hostname
$self->rtr_find($hostname);
# if rtr->hostname is defined as code then call it to determine the real hostname
# if it's not then treat it as an alias.
if (defined($self->profile->{hostname})) {
if (ref($self->profile->{hostname}) eq 'CODE') {
$hostname = &{$self->profile->{hostname}}($hostname);
} else {
$hostname = $self->profile->{hostname};
}
}
$self->{hostname} = $hostname;
return $self->{hostname};
}
=head2 methods
$self->methods();
This is used to determine the method used to connect to the remote device.
Generally, the CLI argument -m has the highest priority. The uri should be
second, profiles third, and the defaults would be last. If called without
arguments it will return whatever the currently decided method array is. If
called with an argument that will be set as the new method array.
If you call it multiple times it won't change right now. I may need to
( run in 1.464 second using v1.01-cache-2.11-cpan-39bf76dae61 )