Control-CLI
view release on metacpan or search on metacpan
lib/Control/CLI.pm view on Meta::CPAN
}
$debug = defined $args{debug} ? $args{debug} : $Default{debug};
$errmode = defined $args{errmode} ? parse_errmode($pkgsub, $args{errmode}) : $Default{errmode};
$msgFormat = defined $args{errmsg_format} ? $args{errmsg_format} : $Default{errmsg_format};
return _error(__FILE__, __LINE__, $errmode, "$pkgsub: Connection type must be specified in constructor", $msgFormat) unless defined $connectionType;
if ($connectionType =~ /^TELNET$/i) {
croak "$pkgsub: Module 'Net::Telnet' required for telnet access" unless $UseTelnet;
@CLI::ISA = qw(Net::Telnet);
$parent = Net::Telnet->new(Binmode => 1);
# Set up callbacks for telnet options
$parent->option_callback(\&_telnet_opt_callback);
$parent->suboption_callback(\&_telnet_subopt_callback);
$connectionType = 'TELNET';
}
elsif ($connectionType =~ /^SSH$/i) {
croak "$pkgsub: Module 'Net::SSH2' required for ssh access" unless $UseSSH;
@CLI::ISA = qw(Net::SSH2);
$parent = Net::SSH2->new();
$connectionType = 'SSH';
}
lib/Control/CLI.pm view on Meta::CPAN
window_size => $Default{window_size},
report_query_status => $Default{report_query_status},
debug => $Default{debug},
};
if ($connectionType eq 'SERIAL') { # Adjust read_block_size defaults for Win32::SerialPort & Device::SerialPort
$self->{read_block_size} = ($^O eq 'MSWin32') ? $Default{read_block_size}{SERIAL_WIN32}
: $Default{read_block_size}{SERIAL_DEVICE};
}
bless $self, $class;
if ($connectionType eq 'TELNET') {
# We are going to setup option callbacks to handle telnet options terminal type and window size
# However the callbacks only provide the telnet object and there is no option to feed additional arguments
# So need to link our object into the telnet one; here we create a key to contain our object
*$parent->{net_telnet}->{$Package} = $self;
}
foreach my $arg (keys %args) { # Accepted arguments on constructor
if ($arg eq 'errmode') { $self->errmode($args{$arg}) }
elsif ($arg eq 'errmsg_format') { $self->errmsg_format($args{$arg}) }
elsif ($arg eq 'timeout') { $self->timeout($args{$arg}) }
elsif ($arg eq 'connection_timeout') { $self->connection_timeout($args{$arg}) }
elsif ($arg eq 'read_block_size') { $self->read_block_size($args{$arg}) }
elsif ($arg eq 'blocking') { $self->blocking($args{$arg}) }
lib/Control/CLI.pm view on Meta::CPAN
}
my $connect = $self->{POLL}{$pollsub};
local $self->{errmode} = $connect->{errmode} if defined $connect->{errmode};
my $ok;
if ($connect->{stage} < 1) { # Initial setup - do only once
$self->{BUFFER} = '';
$self->{LOGINSTAGE} = '';
# For these arguments, go change the object setting, as it will need accessing via Net:Telnet callbacks
$self->terminal_type($connect->{terminal_type}) if defined $connect->{terminal_type};
$self->window_size(@{$connect->{window_size}}) if defined $connect->{window_size};
}
if ($self->{TYPE} eq 'TELNET') {
if ($connect->{stage} < 1) { # Initial setup - do only once
$connect->{stage}++; # Ensure we don't come back here in non-blocking mode
return $self->poll_return($self->error("$pkgsub: No Telnet host provided")) unless defined $connect->{host};
$self->{PARENT}->errmode('return');
$self->{PARENT}->timeout($self->{timeout});
( run in 0.452 second using v1.01-cache-2.11-cpan-9b1e4054eb1 )