Net-FullAuto
view release on metacpan or search on metacpan
lib/Net/FullAuto/FA_Core.pm view on Meta::CPAN
$_[0]->{'username'}=$_[0]->{'loginid'};
} elsif (exists $_[0]->{'login'}) {
$_[0]->{'loginid'}=$_[0]->{'login'};
$_[0]->{'username'}=$_[0]->{'login'};
} elsif (exists $_[0]->{'username'}) {
$_[0]->{'loginid'}=$_[0]->{'username'};
$_[0]->{'login'}=$_[0]->{'username'};
}
$_[0]->{'label'}||='';
$Hosts{$_[0]->{'label'}}=$_[0]||'';
$hostlabel=$_[0]->{'label'};
} elsif ($_[0] eq '__shell__') {
$hostlabel="__Master_${$}__";
$Hosts{$hostlabel}{'HostName'}='localhost';
$Hosts{$hostlabel}{'hostname'}='localhost';
$Hosts{$hostlabel}{'Label'}=$hostlabel;
$Hosts{$hostlabel}{'label'}=$hostlabel;
$_connect='connect_shell';
}
} else {
my @called=caller(2);
if ((-1<index $caller,'mirror') || (-1<index $caller,'login_retry')) {
$sub=$called[3]
} else {
$caller=$called[3];
$caller=(caller(0))[0] if $caller=~/[(]eval[)]/;
$called[6]||='';
$sub=($called[6])?$called[6]:$called[3];
$sub=~s/^.*:://;
} $sub=~s/\s*\;\n*//
}
$Net::FullAuto::FA_Core::cltimeout||='X';
if ($Net::FullAuto::FA_Core::cltimeout ne 'X') {
$timeout=$Net::FullAuto::FA_Core::cltimeout;
} elsif (defined $_[1] && $_[1]=~/^[1-9]+/) {
$timeout=$_[1];
} elsif (defined $_[1] && (-1<index $_[1],'Cache::FileCache')) {
$cache=$_[1];
unless (exists $cache->{'key'} && $cache->{'key'}) {
if ($cache_key) {
$cache->{'key'}=$cache_key;
} else {
handle_error("A cache object exists, ".
"but a cache key is not defined");
}
}
} elsif (defined $_[1] &&
(-1<index $_[1],'Moose::Meta::Class::__ANON__::SERIAL')
&& ($_[1]->chi_root_class)) {
$cache=$_[1];
unless (exists $cache->{'key'} && $cache->{'key'}) {
if ($cache_key) {
$cache->{'key'}=$cache_key;
} else {
handle_error("A cache object exists, ".
"but a cache key is not defined");
}
}
} elsif ((-1==index $caller,'mirror') &&
(-1==index $caller,'login_retry')) {
my $time_out='$' . (caller)[0] . '::timeout';
$time_out= eval $time_out;
if ($@ || $time_out!~/^[1-9]+/) {
$timeout=30;
} else { $timeout=$time_out }
} else { print "FOUR\n";$timeout=30 }
if (defined $_[2] && lc($_[2]) ne '__telnet__' && lc($_[2]) ne '__ftp__') {
$Net::FullAuto::FA_Core::test=$_[2];
} elsif (defined $_[2] && (-1<index $_[2],'Cache::FileCache')) {
$cache=$_[2];
unless (exists $cache->{'key'} && $cache->{'key'}) {
if ($cache_key) {
$cache->{'key'}=$cache_key;
} else {
handle_error("A cache object exists, ".
"but a cache key is not defined");
}
}
} elsif (defined $_[2] &&
(-1<index $_[2],'Moose::Meta::Class::__ANON__::SERIAL')
&& ($_[2]->chi_root_class)) {
$cache=$_[2];
unless (exists $cache->{'key'} && $cache->{'key'}) {
if ($cache_key) {
$cache->{'key'}=$cache_key;
} else {
handle_error("A cache object exists, ".
"but a cache key is not defined");
}
}
} else {
my $tst='$' . (caller)[0] . '::test';
$tst= eval $tst;
$tst||=0;
if ($@ || $tst!~/^[1-9]+/) {
$Net::FullAuto::FA_Core::test=0;
} else { $Net::FullAuto::FA_Core::test=$tst }
}
if (!$cache && $main::cache) {
$cache=$main::cache;
}
unless (exists $Hosts{$hostlabel}) {
my $die="\n FATAL ERROR - The First Argument to "
."&connect_host()\n -> \"$hostlabel"
."\"\n Called from the User Defined "
."Subroutine\n -> \&$sub\n "
." in the \"Custom Code\" module file"
."\n -> $caller is NOT a\n"
." Valid Host Label\n\n"
." Be sure there is Valid Host "
."Block\n Entry in the Hosts file\n"
." -> $Net::FullAuto::FA_Core::fa_host .\n\n";
print $Net::FullAuto::FA_Core::LOG $die
if $Net::FullAuto::FA_Core::log &&
-1<index $Net::FullAuto::FA_Core::LOG,'*';
print $die if (!$Net::FullAuto::FA_Core::cron
&& $Net::FullAuto::FA_Core::debug)
&& !$Net::FullAuto::FA_Core::quiet;
&handle_error($die,'__cleanup__');
}
my $new_handle='';my $stderr='';
if ($_connect eq 'connect_ssh'
|| $_connect eq 'connect_shell'
|| $_connect eq 'connect_telnet') {
($new_handle,$stderr)=new Rem_Command($hostlabel,
'__new_master__',$_connect,$cache);
print $Net::FullAuto::FA_Core::LOG
"connect_host()1 STDERRFOR1011=$stderr<==\n"
if $Net::FullAuto::FA_Core::log &&
-1<index $Net::FullAuto::FA_Core::LOG,'*';
} else {
($new_handle,$stderr)=new File_Transfer($hostlabel,
'__new_master__',$_connect,$cache,
$quiet);
print $Net::FullAuto::FA_Core::LOG
"connect_host()2 STDERRFOR1011=$stderr<==\n"
if $Net::FullAuto::FA_Core::log &&
-1<index $Net::FullAuto::FA_Core::LOG,'*';
}
if (wantarray) {
print $Net::FullAuto::FA_Core::LOG "RETURNING1\n"
if $Net::FullAuto::FA_Core::log &&
-1<index $Net::FullAuto::FA_Core::LOG,'*';
return $new_handle,$stderr;
} elsif (!$stderr) {
print $Net::FullAuto::FA_Core::LOG "RETURNING2\n"
if $Net::FullAuto::FA_Core::log &&
-1<index $Net::FullAuto::FA_Core::LOG,'*';
return $new_handle;
} else {
print $Net::FullAuto::FA_Core::LOG "DIEINGNOWHERE\n"
if $Net::FullAuto::FA_Core::log &&
lib/Net/FullAuto/FA_Core.pm view on Meta::CPAN
($stdout,$stderr)=&Net::FullAuto::FA_Core::pty_cmd($cmd,5);
chdir $cd;
}
} elsif ($^O eq 'cygwin' &&
!(-e $Hosts{$mr}{'berkeley_db_path'}.$dbname.'/'.
"${Net::FullAuto::FA_Core::progname}_${kind}_$lc_dbname.db")) {
$mkdflag=1;
}
my $dbenv = BerkeleyDB::Env->new(
-Home => $Hosts{$mr}{'berkeley_db_path'}.$dbname,
-Flags => DB_CREATE|DB_INIT_CDB|DB_INIT_MPOOL,
-LockDetect => DB_LOCK_DEFAULT
) or &handle_error(
"cannot open environment for DB: $BerkeleyDB::Error\n",'',$track);
my $bdb = BerkeleyDB::Btree->new(
-Filename =>
"${Net::FullAuto::FA_Core::progname}_${kind}_$lc_dbname.db",
-Flags => DB_CREATE,
-Env => $dbenv
);
unless ($BerkeleyDB::Error=~/Successful/) {
my $d=&Net::FullAuto::FA_Core::find_berkeleydb_utils('recover');
my $cmd="$d -h ".$Hosts{$mr}{'berkeley_db_path'}.$dbname;
my $out=`$cmd`;
&handle_error($out) if $out;
$bdb = BerkeleyDB::Btree->new(
-Filename =>
"${Net::FullAuto::FA_Core::progname}_${kind}_$lc_dbname.db",
-Flags => DB_CREATE,
-Env => $dbenv
);
unless ($BerkeleyDB::Error=~/Successful/) {
&Net::FullAuto::FA_Core::handle_error("Cannot Open DB:".
"${Net::FullAuto::FA_Core::progname}_${kind}_$lc_dbname.db".
" $BerkeleyDB::Error\n");
}
}
&handle_error(
"cannot open Btree for DB: $BerkeleyDB::Error\n",
'__cleanup__',$track)
unless $BerkeleyDB::Error=~/Successful/;
# print the contents of the file
if ($mkdflag && $^O eq 'cygwin') {
my $mode=$Net::FullAuto::FA_Core::cygwin_berkeley_db_mode;
my $cmd=$Net::FullAuto::FA_Core::gbp->('chmod')."chmod -Rv $mode ".
$Hosts{$mr}{'berkeley_db_path'}.$dbname.'/'.
"${Net::FullAuto::FA_Core::progname}_${kind}_$lc_dbname.db";
my ($stdout,$stderr)=&Net::FullAuto::FA_Core::pty_cmd($cmd,5);
&handle_error($stderr) if $stderr && -1==index $stderr,'mode of';
}
return $dbenv,$bdb;
}
sub fa_login
{
if (defined $_[0] && $_[0]=~/^\d+$/) {
$timeout=$_[0];
} else {
my $time_out='$' . (caller)[0] . '::timeout';
$time_out= eval $time_out;
$time_out||=30;
if ($@ || $time_out!~/^[1-9]+/) {
$timeout=30;
} else { $timeout=$time_out }
} $test=0;$prod=0;
###################################
# The following are being set if
# found defined in Term::Menus
my $log_='$' . (caller)[0] . '::log';
$log_= eval $log_;
$log_=0 if $@ || !$log_;
my $tosspass_='$' . (caller)[0] . '::tosspass';
$tosspass_= eval $tosspass_;
$tosspass_=0 if $@ || !$tosspass_;
## end Term::Menus defs ###########
my $fhtimeout='X';
my $fatimeout=$timeout;
my $tst='$' . (caller)[0] . '::test';
$tst=eval $tst;
$test=$tst if !$@ || $tst=~/^[1-9]+/;
my $_connect='connect_ssh_telnet';
if (exists $Hosts{"__Master_${$}__"}{'Local'}) {
my $loc=$Hosts{"__Master_${$}__"}{'Local'};
unless ($loc eq 'connect_ssh'
|| $loc eq 'connect_telnet'
|| $loc eq 'connect_ssh_telnet'
|| $loc eq 'connect_telnet_ssh') {
my $die="\n FATAL ERROR - \"Local\" has "
."*NOT* been Properly\n Defined in the "
."\"$Net::FullAuto::FA_Core::fa_host\" File."
."\n This "
."Element must have one of the following\n"
." Values:\n\n "
." 'connect_ssh'or 'connect_telnet'\n "
." 'connect_ssh_telnet' or\n "
." 'connect_telnet_ssh'\n\n"
." \'$loc\' is INCORRECT.\n\n";
print $Net::FullAuto::FA_Core::LOG $die
if $Net::FullAuto::FA_Core::log &&
-1<index $Net::FullAuto::FA_Core::LOG,'*';
&Net::FullAuto::FA_Core::handle_error($die,'__cleanup__');
} elsif ($loc eq 'connect_ssh') {
$_connect=$loc;
@RCM_Link=('ssh');
} elsif ($loc eq 'connect_telnet') {
$_connect=$loc;
@RCM_Link=('telnet');
} elsif ($loc eq 'connect_ssh_telnet') {
$_connect=$loc;
@RCM_Link=('ssh','telnet');
} else {
$_connect=$loc;
@RCM_Link=('telnet','ssh');
}
} else {
@RCM_Link=('ssh','telnet');
$Hosts{"__Master_${$}__"}{'Local'}=$_connect;
}
$email_defaults='%' . (caller)[0] . '::email_defaults';
%email_defaults=eval $email_defaults;
if ($@) {
$email_defaults=0;
%email_defaults=();
} else { $email_defaults=1 }
my $email_addresses='%' . (caller)[0] . '::email_addresses';
%email_addresses=eval $email_addresses;
%email_addresses=() if $@;
my $test_caller=(caller)[0];
$custom_code_module_file='$' . (caller)[0] . '::fa_code';
$custom_code_module_file=eval $custom_code_module_file;
if ($@) {
my $die="Cannot Locate the \"FullAuto Custom Code\" "
."perl module (.pm) file\n < original "
."default name 'fa_code.pm' >\n\n $@";
&handle_error($die,'-3');
}
my $man=0;my $help=0;my $userflag=0;my $passerror=0;
my $test_arg=0;my $oldcipher='';
my @holdARGV=@ARGV;@menu_args=();my $username_from='';
my $cust_subnam_in_fa_code_module_file;my $sem='';
my $sshport='';
Getopt::Long::Configure ("bundling");
&GetOptions(
'admin' => \$admin,
'menu' => \$menu,
'welcome' => \$welcome,
'new_user' => \$newuser,
'newuser' => \$newuser,
'new-user' => \$newuser,
'iset-amazon:s' => \$iset_amazon,
'iset-local:s' => \$iset_local,
'amazon-cleanup' => \$amazoncleanup,
'tutorial' => \$tutorial,
'figlet' => \$figlet,
'g' => \$go,
'go' => \$go,
'about' => \$version,
'authorize_connect' => \$authorize_connect,
'cache_root=s' => \$cache_root,
'cache_key=s' => \$cache_key,
'debug' => \$debug,
'dashboard' => \$dashboard,
'scrub' => \$scrub,
'help|?' => \$help,
'i=s' => \$identityfile,
'identity_file=s' => \$identityfile,
'identity-file=s' => \$identityfile,
'identityfile=s' => \$identityfile,
'log:s' => \$log,
'l:s' => \$log,
man => \$man,
'password:s' => \$passwrd,
'pw:s' => \$passwrd,
'password_no_warning:s' => \$passwrdnw,
'pwnw:s' => \$passwrdnw,
'quiet' => \$quiet,
'oldpassword=s' => \$oldpasswd,
'oldcipher=s' => \$oldcipher,
'updatepw' => \$updatepw,
'local-login-id:s' => \$usrname,
'localid:s' => \$usrname,
'local_id:s' => \$usrname,
'local-id:s' => \$usrname,
'login:s' => \$usrname,
'loginid:s' => \$usrname,
'login_id:s' => \$usrname,
'login-id:s' => \$usrname,
'id:s' => \$usrname,
lib/Net/FullAuto/FA_Core.pm view on Meta::CPAN
|| $ENV{OS} eq 'Windows_NT') {
print "DO MORE WORK ON MSWIN!\n";<STDIN>;
$Net::FullAuto::FA_Core::localhost->{_cmd_handle}->SUPER::cmd(
"mkdir -m 777 $label1");
$version_label=$label1;last;
}
}
} else { $version_label=$label1;last }
} else { $version_label=$label1;last }
} else {
print $Net::FullAuto::FA_Core::blanklines;
print "\n\n Version Numbers Do NOT Match!";
}
} print "\n\n";
$Net::FullAuto::FA_Core::version_label=$version_label;
return $version_label;
}
sub select_dir
{
my $self=$_[0];
my $dir='.';my $random=0;
my $dots=0;my $dot=0;my $dotdot=0;
if (defined $_[1] && $_[1]) {
if ($_[1] eq '__random__') {
$random=1;
} elsif ($_[1] eq '__dots__') {
$dots=1;
} elsif ($_[1] eq '__dot__') {
$dot=1;
} elsif ($_[1] eq '__dotdot__') {
$dotdot=1;
} else {
$dir=$_[1];
}
}
if (defined $_[2] && $_[2]) {
if ($_[2] eq '__random__') {
$random=1;
} elsif ($_[2] eq '__dots__') {
$dots=1;
} elsif ($_[2] eq '__dot__') {
$dot=1;
} elsif ($_[2] eq '__dotdot__') {
$dotdot=1;
}
}
if (defined $_[3] && $_[3]) {
if ($_[3] eq '__random__') {
$random=1;
} elsif ($_[1] eq '__dots__') {
$dots=1;
} elsif ($_[1] eq '__dot__') {
$dot=1;
} elsif ($_[1] eq '__dotdot__') {
$dotdot=1;
}
}
my $caller=(caller)[2];
my $hostlabel=$self->{_hostlabel}->[0];
my ($ip,$hostname,$use,$ms_share,$ms_domain,
$cmd_cnct,$ftr_cnct,$login_id,$su_id,$chmod,
$owner,$group,$sdtimeout,$transfer_dir,$uname,
$ping,$password,$proxy,$identityfile,$spawn,
$local_pw,$noretry)
=&Net::FullAuto::FA_Core::lookup_hostinfo_from_label($hostlabel,'');
my $host= ($use eq 'ip') ? $ip : $hostname;
$ms_share||='';my %output=();my $nt5=0;
my $output='';my $stderr='';my $i=0;my @output=();
if ($ms_share || $self->{_uname} eq 'cygwin') {
my $test_chr1='';my $test_chr2='';
if ($dir) {
$test_chr1=unpack('a1',$dir);
if (1<length $dir) {
$test_chr2=unpack('a2',$dir);
}
if ($test_chr2) {
if (($test_chr1 eq '/' && $test_chr2 ne '//')
|| ($test_chr1 eq '\\' &&
$test_chr2 ne '\\\\')) {
if ($dir=~s/^$self->{_cygdrive_regex}//) {
$dir=~s/^(.)/$1:/;
$dir=~tr/\//\\/;
$dir=~s/\\/\\\\/g;
} elsif ($hostlabel eq "__Master_${$}__"
&& $^O eq 'cygwin') {
$dir=&File_Transfer::get_drive($dir,'Destination',
'',$hostlabel);
$dir=~s/^$self->{_cygdrive_regex}//;
$dir=~s/^(.)/$1:/;
$dir=~tr/\//\\/;
$dir=~s/\\/\\\\/g;
} else {
$dir=~tr/\//\\/;
$dir="\\\\$host\\$ms_share\\"
. unpack('x1 a*',$dir);
}
} elsif ($test_chr2 eq '//' ||
$test_chr2 eq '\\\\' || $test_chr2=~/^[a-zA-Z]:$/) {
} elsif ($test_chr1!~/\W/) {
if ($hostlabel eq "__Master_${$}__"
&& $^O eq 'cygwin') {
my $curdir='';
($curdir,$stderr)=
&Net::FullAuto::FA_Core::cmd($localhost,'pwd');
&handle_error($stderr,'-1') if $stderr;
my $cdr='';
if (-1<index $curdir,$localhost->{_cygdrive}) {
my $l_cd=(length $localhost->{_cygdrive})+1;
my $cdr=unpack("x$l_cd a*",$curdir);
substr($cdr,1,0)=':';
$cdr=ucfirst($cdr);
$cdr=~s/\//\\\\/g;
} elsif (exists $Net::FullAuto::FA_Core::cygpathw{$curdir}) {
$cdr=$Net::FullAuto::FA_Core::cygpathw{$curdir};
} else {
($cdr,$stderr)=&Net::FullAuto::FA_Core::cmd(
$localhost,"cygpath -w \"$curdir\"",'__delay__=200');
&handle_error($stderr,'-1') if $stderr;
lib/Net/FullAuto/FA_Core.pm view on Meta::CPAN
$Net::FullAuto::FA_Core::fa_perm==365;
($output,$stderr)=$self->cmd($Net::FullAuto::FA_Core::gbp->('mkdir').
'mkdir -p '.$m.$self->{_work_dirs}->{_tmp}.'/'.$tdir);
&Net::FullAuto::FA_Core::handle_error($stderr) if $stderr;
$return_path=$self->{_work_dirs}->{_tmp}.$tdir.'/'.$path;
} return $return_path, $self->{_work_dirs}->{_tmp}.$tdir;
}
sub diff
{
push @_, '_diff';
return &mirror(@_);
}
sub mirror
{
my $_diff=0;
if ($_[$#_] eq '_diff') {
pop @_;
$_diff=1;
}
my ($baseFH, %args) = @_;
unless (exists $baseFH->{_ftp_handle} ||
!$same_host_as_Master{$baseFH->{_hostlabel}}) {
my $die="The \"BaseHost =>\" Argument to &mirror()"
."\n -> \"$baseFH->{_hostlabel}->[0]\" "
." Does not have an embedded SFTP connection\n "
." -> Be sure to use &connect_host() when"
." creating a base\n host connection to"
." be used with &mirror() when base"
."\n host is not the localhost.";
if (wantarray) {
return '',$die;
} else { &Net::FullAuto::FA_Core::handle_error($die) }
}
my $username=&Net::FullAuto::FA_Core::username();
my $dest_output='';my $base_output='';my $lsgnu=0;
my $num_of_levels='';my $mirrormap='';my $trantar='';
my $trandir='';my $chk_id='';my $local_transfer_dir='';
my $destFH={};my $bprxFH='';my $dprxFH='';
my $sub=(caller(1))[3];$sub=~s/\s*FA_Core::/&/;
my $caller='';my $cline='';my $mirror_output='';
my $debug_info='';$deploy_info='';my $dir='';
my $mirror_debug='';my $excluded='';
my $base_unzip_path='';my $dest_unzip_path='';
my $base_zip_path='';my $tarlistmpdir='';
my ($output,$stdout,$stderr)=('','','');
$args{ZipBDir}||='';
$args{ZipDDir}||='';
if (!exists $args{Cache} || !$args{Cache} && $main::cache) {
$args{Cache}=$main::cache;
}
$args{Cache}||='';
my $cache=$args{Cache};
print "WHAT IS CACHE=$cache\n" if $cache;
print "KEYS=",(join " | ",keys %{$cache}),"\n" if $cache;
#print $Net::FullAuto::FA_Core::LOG "CACHEEEEEEEEEEEEEEEEEEEEEEEEEE=",$cache->{'key'},"\n";
($caller,$cline)=(caller)[1,2];
if (ref $args{DestHost} eq 'ARRAY') {
@dhostlabels=@{$args{DestHost}};
} elsif (4<length $args{DestHost} && unpack('a5',$args{DestHost})
eq 'ARRAY') {
&Net::FullAuto::FA_Core::handle_error(
"quotes improperly surround destination hostlabel(s) arg");
} else { @dhostlabels=();push @dhostlabels, $args{DestHost} }
foreach my $dest_hlabel (@dhostlabels) {
unless (exists $Net::FullAuto::FA_Core::Hosts{$dest_hlabel}) {
my $die="The \"DestHost =>\" Argument to &mirror()"
."\n -> \"$dest_hlabel\" Called"
." from the User Defined Subroutine\n "
." -> $sub is NOT\n a Valid"
." Host Label in the \"subs\" Subroutine File"
."\n -> $caller line $cline.\n";
if (wantarray) {
return '',$die;
} else { &Net::FullAuto::FA_Core::handle_error($die) }
} else {
last;
}
}
my $bhostlabel=$baseFH->{_hostlabel}->[0];
my $dhostlabel=$dhostlabels[0];
my $base_fdr=$args{BaseFileOrDir} || $args{BaseDir} || $args{BaseFile};
my $verbose=(exists $args{Verbose} && $args{Verbose}) ? 1 : 0;
my $skip_empty_dirs=
(exists $args{SkipEmptyDirs} && $args{SkipEmptyDirs}) ? 1 : 0;
my $index_base_once=
(exists $args{IndexBaseOnce} && $args{IndexBaseOnce}) ? 1 : 0;
$base_fdr||='';
$base_fdr=~s/[\/|\\]*$//;
if (unpack('a1',$base_fdr) eq '~') {
($stdout,$stderr)=$baseFH->cmd('echo ~');
$base_fdr=~s/~/$stdout/s;
}
my $dest_fdr=$args{DestDir};
$dest_fdr||='';
$dest_fdr=~s/[\/|\\]*$//;
my ($bip,$bhostname,$buse,$bms_share,$bms_domain,
$bcmd_cnct,$bftr_cnct,$blogin_id,$bsu_id,$bchmod,
$bowner,$bgroup,$btimeout,$btransfer_dir,$buname,
$bping,$bpassword,$bproxy,$bidentityfile,$bspawn,
$blocal_pw,$bnoretry)
=&Net::FullAuto::FA_Core::lookup_hostinfo_from_label($bhostlabel,
$baseFH->{_connect});
if ($Net::FullAuto::FA_Core::cltimeout ne 'X') {
$btimeout=$Net::FullAuto::FA_Core::cltimeout;
} elsif (!$btimeout) {
$btimeout=$Net::FullAuto::FA_Core::timeout if !$btimeout;
}
my $bhost=($buse eq 'ip')?$bip:$bhostname;
$bms_share||='';$btransfer_dir||='';
my ($dip,$dhostname,$duse,$dms_share,$dms_domain,
$dcmd_cnct,$dftr_cnct,$dlogin_id,$dsu_id,$dchmod,
$downer,$dgroup,$dtimeout,$dtransfer_dir,$duname,
$dping,$dpassword,$dproxy,$didentityfile,$dspawn,
$dlocal_pw,$dnoretry)
=&Net::FullAuto::FA_Core::lookup_hostinfo_from_label($dhostlabel,
$destFH->{_connect});
( run in 0.761 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )