Net-FullAuto
view release on metacpan or search on metacpan
lib/Net/FullAuto/FA_Core.pm view on Meta::CPAN
# gpg --gen-key (then follow onscreen instructions)
#
# Export Public Key: http://www.gnupg.org/gph/en/manual/x56.html
# http://keyserver.ubuntu.com:11371
# http://pgp.mit.edu
# https://keyserver.pgp.com
#
# http://irtfweb.ifa.hawaii.edu/~lockhart/gpg/gpg-cs.html (gpg cheatsheet)
#
## For running CPAN with sudo
#
# sudo -i cpan (-i loads the root environment)
#
## For compiling into MSWin32 setup executable with PAR::Packager
#
# pp -o "Setup-FullAuto-v.99999932-MSWin32-x86.exe"
# -l C:\strawberry\perl\bin\libgcc_s_sjlj-1.dll
# -l C:\strawberry\c\bin\libeay32_.dll
# -l C:\strawberry\c\bin\libz_.dll
# -l C:\strawberry\c\bin\libz.dll
# -l C:\strawberry\c\bin\ssleay32_.dll Makefile.PL
# -M Module::Build -M Task::Weaken -M YAML
# -M Capture::Tiny -M ExtUtils::Depends
# -M ExtUtils::MakeMaker -M B::Utils
# -M Data::Dump::Streamer -M LWP -M IO::Socket::SSL
# -M LWP::Protocol::https -M Mozilla::CA
# -M Term::RawInput -M JSON -M Term::Menus
# -M Win32::API -M Win32::DriveInfo -M DBD::SQLite
# -a bin -a ChangeLog -a inc -a Module -a lib -a t
# -a META.yml -a LICENSE -a MANIFEST -a README
# -a UNINSTALL_CYGWIN --icon FA_Setup.ico
#
# http://download.oracle.com/berkeley-db/db-5.1.19.tar.gz
#
## For OpenSolaris - getting a dev environment
#
# pfexec pkg install ss-dev
#
## For password-less ssh
#
# a@A: ssh-keygen -t rsa
# a@A: ssh b@B mkdir -p .ssh
# a@A: cat .ssh/id_rsa.pub | ssh b@B 'cat >> .ssh/authorized_keys'
#
## apt-cyg
#
# https://github.com/transcode-open/apt-cyg
#
## For Slow SSH on Cygwin
#
# verify that the fifth field in the user entry in /etc/passwd
# references the correct host name of the machine.
# loginId,U-WRONGHOSTNAME\loginId,S-1-5-21-...
# -to- loginId,U-RIGHTHOSTNAME\loginId,S-1-5-21...
#
# Also - in the /etc/ssh_config, set UseDNS to no.
#
## Cygwin sshd - /bin/bash: Operation not permitted.
#
# Culprit is mostly permissions on /var/empty and /var/run
# chown cyg_server /var/empty
# chmod 755 /var/empty
# see cygwin_sshd.pdf (in FullAuto distribution) and at
# http://http://www.tux.org/~mayer/cygwin/cygwin_sshd.pdf
#
## ASCII BANNER Courtesy of (small font):
#
# http://www.network-science.de/ascii/
#
## Vim auto-indenting turn off
#
# http://vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste
# :set paste
#
## Send cmd and do interactive over ssh:
#
# ssh user@host -t 'bash -l -c "ls;bash"'
#
## Check for "Run as Administrator"
#
# http://www.vivtek.com/perl/perl_uac.html
#
## Copyright and other symbols
#
# http://symbolcodes.tlt.psu.edu/accents/codealt.html
#
## Stream file over ssh
#
# http://sshmenu.sourceforge.net/articles/transparent-mulithop.html
# https://blog.bravi.org/?p=259
# https://bbs.archlinux.org/viewtopic.php?id=132276
# www.commandlinefu.com/commands/view/7789/copy-a-file-over-ssh-without-scp
# ssh test@example.org "cd mydir && tar cfp - mysubdir" | tar xvfp -
#
## Setup Windows Scheduler for FullAuto:
#
# cmd /c "c:\cygwin64\bin\bash -lc
# '/usr/local/bin/fullauto -gc custom_code --log --authorize_connect'"
# Place above command in shell file custom_code.bat
# Put EXIT after command in custom_code.bat
# | General | tab
# Inidicate a User Account to use with Task Scheduler
# Be sure to select 'Run whether user is logged on or not
# Check the box 'Do not store password ...'
# Check with highest privileges
# | Triggers | tab
# Begin the task: On a schedule
# One time
# Check the box 'Repeat task every: time for a duration of indefinitely'
# Check the box 'Stop task if it runs longer than xx minutes'
# Check the box 'Enabled'
# | Actions | tab
# Action: Start a program
# Program/script: c:\Windows\System32\cmd.exe
# Add arguments: /c start "" "c:\cygwin64\home\User\custom_code.bat"
#
## TO DO: Look for way to fix this error:
#
# cd "/cygdrive_funkyPrompt_cd "/cygdrive/c/Users/KB06606-admin" 2>&1
#
# Look into Parallel ForkManager
lib/Net/FullAuto/FA_Core.pm view on Meta::CPAN
$label1=<STDIN>;chomp($label1);
next if $label1 eq '';
if ($label1 ne uc($label1)) {
print $Net::FullAuto::FA_Core::blanklines;
print "\n\n ERROR! - Use Only Upper Case Letters ",
"for Version Labels!";
next;
}
print "\n Please Re-Enter the Version Number : ";
$label2=<STDIN>;chomp($label2);
if ($label1 eq "") {
print $Net::FullAuto::FA_Core::blanklines;
next;
}
if ($label1 eq $label2) {
if (($deploy_type eq 'get' || ($deploy_type eq 'put' &&
($dest_hostlabel ne "__Master_${$}__" &&
$base_hostlabel ne "__Master_${$}__")))
&& $archivedir) {
my $chmod='';my $own='';my $grp='';
my %settings=();
if (($archive_hostlabel eq "__Master_${$}__"
&& $Net::FullAuto::FA_Core::local_hostname eq substr(
$Net::FullAuto::FA_Core::Hosts{
"__Master_${$}__"}{'HostName'},0,index
$Net::FullAuto::FA_Core::Hosts{
"__Master_${$}__"}{'HostName'},
'.')) || $deploy_type eq 'put') {
if (defined $archivedir && $archivedir ne '') {
if (-1<index $archivedir,'__VLABEL__') {
$archivedir=~s/__VLABEL__/$label1/g;
}
if (-d "$archivedir") {
if (-f "$archivedir/mving.flg") {
$version_label=$label1;last;
} else {
my $target=$archive_hostlabel;
my $die="\n\nFATAL ERROR!!!\n\nThis Version "
."- $label1 - already exists on $target"
."!\n\nIf this is the right Version, "
."move or delete the\ndirectory on $target "
."before running this script\n\n";
&Net::FullAuto::FA_Core::handle_error(
$die,'__cleanup__');
}
} elsif ($^O ne 'cygwin' && $^O ne 'MSWin32'
&& $^O ne 'MSWin64'
&& $ENV{OS} ne 'Windows_NT') {
#### DO ERROR TRAPPING!!!!!!!!!!!!
#print "MKDIR1=$archivedir\n";
$Net::FullAuto::FA_Core::localhost->{_cmd_handle}->SUPER::cmd(
$Net::FullAuto::FA_Core::gbp->('mkdir')."mkdir \'/$archivedir\'");
my $chmod=$Net::FullAuto::FA_Core::Hosts{"__Master_${$}__"}{'Chmod'};
my $own=$Net::FullAuto::FA_Core::Hosts{"__Master_${$}__"}{'Owner'};
my $grp=$Net::FullAuto::FA_Core::Hosts{"__Master_${$}__"}{'Group'};
$Net::FullAuto::FA_Core::localhost->{_cmd_handle}->SUPER::cmd(
"chmod -v \"$chmod\" \'/$archivedir\'")
if $chmod;
@output=$Net::FullAuto::FA_Core::localhost->{_cmd_handle}->SUPER::cmd(
"chown \"$own\" \'/$archivedir\'")
if $own;
$Net::FullAuto::FA_Core::localhost->{_cmd_handle}->SUPER::cmd(
"chgrp \"$grp\" \'/$archivedir\'")
if $grp;
$Net::FullAuto::FA_Core::localhost->{_cmd_handle}->SUPER::cmd(
"touch \"/$archivedir/mving.flg\"");
$Net::FullAuto::FA_Core::localhost->{_cmd_handle}->SUPER::cmd(
"chmod -v \"$chmod\" \"/$archivedir/mving.flg\"")
if $chmod;
$Net::FullAuto::FA_Core::localhost->{_cmd_handle}->SUPER::cmd(
"chown \"$own\" \"/$archivedir/mving.flg\"")
if $own;
$Net::FullAuto::FA_Core::localhost->{_cmd_handle}->SUPER::cmd(
"chgrp \"$grp\" \"/$archivedir/mving.flg\"")
if $grp;
$version_label=$label1;last;
} elsif ($^O eq 'cygwin' || $^O eq 'MSWin32' || $^O eq 'MSWin64'
|| $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;
lib/Net/FullAuto/FA_Core.pm view on Meta::CPAN
$f_cnt++;
$tar_cmd=
"tar cvf ${bcurdir}transfer".
"$Net::FullAuto::FA_Core::tran[3].tar ";
} else {
$tar_cmd=
"tar rvf ${bcurdir}transfer".
"$Net::FullAuto::FA_Core::tran[3].tar ";
}
$tar_cmd.="-C \"$bcurdir\" \"$key\"";
($output,$stderr)=$baseFH->cmd(
$Net::FullAuto::FA_Core::gbp->('tar',$baseFH).
$tar_cmd);
&Net::FullAuto::FA_Core::handle_error(
$stderr,'-1') if $stderr &&
$stderr!~/\[A(?:\[C)+\[K?1?/;
($output,$stderr)=$baseFH->cmd(
"rm -rf ${bcurdir}$key");
&Net::FullAuto::FA_Core::handle_error(
$stderr,'-1') if $stderr;
}
}
} elsif ($Net::FullAuto::FA_Core::tranback==2 && $activity) {
($output,$stderr)=$baseFH->cmd(
"cp ${bcurdir}transfer".
"$Net::FullAuto::FA_Core::tran[3]_1.tar ".
"${bcurdir}transfer$Net::FullAuto::FA_Core::tran[3].tar");
&Net::FullAuto::FA_Core::handle_error($stderr,'-1')
if $stderr;
$Net::FullAuto::FA_Core::tranback=1;$activity=0;
} else { $activity=0 }
}
if ($_diff) {
my $curdir=$baseFH->{_cwd};
($output,$stderr)=$baseFH->cwd(
"$baseFH->{_cwd}FA_Diff_Report_Zip");
if ($stderr) {
&Net::FullAuto::FA_Core::handle_error(
$stderr,'-1');
}
($output,$stderr)=$baseFH->cmd(
"$base_zip_path/zip -r ".
"fa_diff_report *");
if ($stderr) {
&Net::FullAuto::FA_Core::handle_error(
$stderr,'-1');
}
($output,$stderr)=$baseFH->cmd(
"mv fa_diff_report.zip ..");
if ($stderr) {
&Net::FullAuto::FA_Core::handle_error(
$stderr,'-1');
}
($output,$stderr)=$baseFH->cmd(
"rm -rf $curdir/FA_Diff_Report_Zip");
if ($stderr) {
&Net::FullAuto::FA_Core::handle_error(
$stderr,'-1');
}
($output,$stderr)=$baseFH->cmd(
"chown $username $curdir/fa_diff_report.zip");
if ($stderr) {
&Net::FullAuto::FA_Core::handle_error(
$stderr,'-1');
}
} else {
if ($activity) {
if ($gnu_tar_input_list1) {
chomp $gnu_tar_input_list1;
my @files=split /^/, $gnu_tar_input_list1;
my $filearg='';my $farg='';
foreach my $fil (@files) {
$fil=~s/%/\\%/g;
$farg.=$fil;
print $Net::FullAuto::FA_Core::LOG "DO WEX REALLY GET HERE20 =$farg<= and $filearg<=\n"
if $Net::FullAuto::FA_Core::log &&
-1<index $Net::FullAuto::FA_Core::LOG,'*';
if (1601 < length
"echo \"$farg\" >> \$gnu_tar_input_file1") {
chomp $filearg;
($output,$stderr)=$baseFH->cmd(
"echo \"$filearg\" >> $gnu_tar_input_file1");
&Net::FullAuto::FA_Core::handle_error($stderr,'-1')
if $stderr;
$farg=$fil;
} $filearg=$farg;
}
if ($filearg) {
print $Net::FullAuto::FA_Core::LOG "DO WEX REALLY GET HERE21 =$filearg<=\n"
if $Net::FullAuto::FA_Core::log &&
-1<index $Net::FullAuto::FA_Core::LOG,'*';
chomp $filearg;
($output,$stderr)=$baseFH->cmd(
"echo \"$filearg\" >> $gnu_tar_input_file1");
&Net::FullAuto::FA_Core::handle_error($stderr,'-1')
if $stderr;
}
my $tar_cmd=
"tar cvf ${bcurdir}transfer".
"$Net::FullAuto::FA_Core::tran[3].tar ";
$tar_cmd.="-C \"$base__dir\" -T \"$gnu_tar_input_file1\"";
($output,$stderr)=$baseFH->cmd($tar_cmd,'__display__');
&Net::FullAuto::FA_Core::handle_error($stderr,'-1')
if $stderr;
}
if ($gnu_tar_input_list2) {
chomp $gnu_tar_input_list2;
my @files=split /^/, $gnu_tar_input_list2;
my $filearg='';my $farg='';
foreach my $fil (@files) {
$fil=~s/%/\\%/g;
$farg.=$fil;
if (1601 < length
"echo \"$farg\" >> \$gnu_tar_input_file2") {
chomp $filearg;
($output,$stderr)=$baseFH->cmd(
"echo \"$filearg\" >> $gnu_tar_input_file2");
( run in 0.585 second using v1.01-cache-2.11-cpan-71847e10f99 )