Net-FullAuto
view release on metacpan or search on metacpan
lib/Net/FullAuto.pm view on Meta::CPAN
## To format the following documentation into a more readable format,
## use one of these programs: perldoc; pod2man; pod2html; pod2text.
## For example, to nicely format this documentation for printing, you
## may use pod2man and groff to convert to postscript:
## pod2man FullAuto.pm | groff -man -Tps > FullAuto.ps
=head1 Name
C<Net::FullAuto> - Fully Automate ANY Workload with *Persistent* SSH/SFTP from One Host
=head1 Note to Users
Please contact me or my team at the following email addresses -
=over 4
=item
B<Brian.Kelly@fullauto.com> or B<team@fullauto.com>
=back
and let us know of any and all bugs, issues, problems, questions
as well as suggestions for improvements to both the documentation
and module itself. We will make every effort to get back to you quickly.
Update the module from CPAN *often* - as we anticipate adding
documentation and fixing bugs and making improvements often.
Brian Kelly, March 9, 2016
=head1 License
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
=head1 Shell Synopsis - simple "Hello World"
=over 4
=item
use Net::FullAuto;
$localhost=connect_shell();
($stdout,$stderr,$exitcode)=$localhost->cmd("echo 'Hello World'");
print $stdout;
=back
=head1 SSH & SFTP Combined Synopsis
=over 4
=item
use Net::FullAuto;
my $ip_or_hostname = $ARGV[0] || 'localhost';
my $username = $ARGV[1] || getlogin || getpwuid($<);
my $identity_file = $ARGV[2] || ''; # required unless password or
# or key-based login
my $password = $ARGV[3] || ''; # required unless identity file
# or key-based login
my $remote_host_block={
Label => 'Remote Host',
Hostname => $ip_or_hostname,
Login => $username,
IdentityFile => $identity_file, # can leave out if password or
# or key-based login
Password => $password, # can leave out if identity file
# or key-based login
# password is CLEAR TEXT, which
# is poor security. Consider
# IdentityFile or key-based login
#log => 1,
#debug => 1,
#quiet => 1,
};
my ($remote_host_handle,$error)=('',''); # Define and scope variables
($remote_host_handle,$error)=connect_secure($remote_host_block);
die "Connect_SSH ERROR!: $error\n" if $error;
my ($stdout,$stderr,$exitcode)=('','',''); # Define and scope variables
($stdout,$stderr,$exitcode)=
$remote_host_handle->cmd('hostname'); # Run 'hostname' command in
die $stderr if $stderr; # remote command line environment
print "REMOTE HOSTNAME IS: $stdout\n";
($stdout,$stderr,$exitcode)=
$remote_host_handle->cwd('/'); # Change working directory to the
die $stderr if $stderr; # root of the remote host
($stdout,$stderr,$exitcode)=$remote_host_handle->cmd('pwd');
die $stderr if $stderr;
print "REMOTE HOST CURRENT DIRECTORY VIA SSH IS: $stdout\n";
($stdout,$stderr,$exitcode)=$remote_host_handle->cwd('/');
die $stderr if $stderr;
my @stdout=$remote_host_handle->sftp('pwd');
print "REMOTE HOST CURRENT DIRECTORY VIA SFTP IS: $stdout[1]<==\n";
$remote_host_handle->lcd('~');
@stdout=$remote_host_handle->sftp('!pwd');
print "LOCAL HOST CURRENT DIRECTORY VIA SFTP IS: $stdout[1]<==\n";
#$remote_host_handle->close(); # Use this -OR- cleanup method
cleanup; # Use this routine for faster cleanup
=back
=head1 SSH Synopsis
=over 4
=item
use Net::FullAuto;
my $ip_or_hostname = $ARGV[0] || 'localhost';
my $username = $ARGV[1] || getlogin || getpwuid($<);
my $identity_file = $ARGV[2] || ''; # required unless password or
# or key-based login
my $password = $ARGV[3] || ''; # required unless identity file
# or key-based login
my $remote_host_block={
Label => 'Remote Host',
Hostname => $ip_or_hostname,
Login => $username,
IdentityFile => $identity_file, # can leave out if password or
# or key-based login
Password => $password, # can leave out if identity file
# or key-based login
# password is CLEAR TEXT, which
# is poor security. Consider
# IdentityFile or key-based login
#log => 1,
#debug => 1,
#quiet => 1,
};
my ($remote_host_handle,$error)=('',''); # Define and scope variables
($remote_host_handle,$error)=connect_ssh($remote_host_block);
die "Connect_SSH ERROR!: $error\n" if $error;
my ($stdout,$stderr,$exitcode)=('','',''); # Define and scope variables
($stdout,$stderr,$exitcode)=
$remote_host_handle->cmd('hostname'); # Run 'hostname' command in
die $stderr if $stderr; # remote command line environment
print "REMOTE HOSTNAME IS: $stdout\n";
($stdout,$stderr,$exitcode)=
$remote_host_handle->cwd('/'); # Change working directory to the
die $stderr if $stderr; # root of the remote host
($stdout,$stderr,$exitcode)=$remote_host_handle->cmd('pwd');
die $stderr if $stderr;
print "CURRENT DIRECTORY IS: $stdout\n";
#$remote_host_handle->close(); # Use this -OR- cleanup method
cleanup; # Use this routine for faster cleanup
=back
=head1 SFTP Synopsis
=over 4
=item
use Net::FullAuto;
my $ip_or_hostname = $ARGV[0] || 'localhost';
my $username = $ARGV[1] || getlogin || getpwuid($<);
my $identity_file = $ARGV[2] || ''; # required unless password or
# or key-based login
my $password = $ARGV[3] || ''; # required unless identity file
# or key-based login
my $remote_host_block={
Label => 'Remote Host',
HostName => $ip_or_hostname,
LoginID => $username,
IdentityFile => $identity_file, # can leave out if password or
# or key-based login
Password => $password, # can leave out if identity file
# or key-based login
# password is CLEAR TEXT, which
# is poor security. Consider
# IdentityFile or key-based login
#log => 1,
#debug => 1,
#quiet => 1,
};
my ($remote_host_handle,$error)=connect_sftp($remote_host_block);
die "Connect_SFTP ERROR!: $error\n" if $error;
my ($stdout,$stderr)=('','',''); # Define and scope variables
my @stdout=$remote_host_handle->cmd('pwd');
print "REMOTE DIRECTORY IS: @stdout\n";
($stdout,$stderr)=$remote_host_handle->cwd('/');
die $stderr if $stderr;
@stdout=$remote_host_handle->cmd('pwd');
print "CURRENT DIRECTORY IS: @stdout\n";
#$remote_host_handle->close(); # Use this -OR- cleanup method
cleanup; # Use this routine for faster cleanup
=back
=head1 FullAuto Framework (Coming Soon) Synopsis (Beta/Experimental)
=over 4
The FullAuto Framework utilizes the C<fa> command line utility. Limited functionality is already available, and is documented in various sections below. Only the "Framework" is experimental. FullAuto itself is fully released. The rest of the document...
fa --new-user
Using Term::Menus, the FullAuto "new user experience" demonstrates how a command environment solution (which is or should be the domain of most distributed workload automation) can be I<self-documenting>, without the need, overhead and cost of a web ...
___ _ _ _ _
| __| _| | | /_\ _ _| |_ |
( /_ /_ _ _ | _| || | | |/ _ \ || | _/ | \
|/|/(-(( ()//)(- To |_| \_,_|_|_/_/ \_\_,_|\__\___/c username
( run in 0.349 second using v1.01-cache-2.11-cpan-59e3e3084b8 )