#!/usr/bin/perl --
use strict; use warnings;
use Devel::CheckOS qw(os_is);
use Getopt::Long qw/ GetOptionsFromArray /;
use Data::Dump qw/ dd /;
Main( @ARGV );
exit( 0 );
sub Main {
dd( \@_ );
my %opts = (
prefix => 'C:/Bounce', # default
);
GetOptionsFromArray(
\@_,
\%opts,
q{username|user|u=s},
q{password|pass|p=s},
q{host|h=s},
q{prefix|pre=s},
q{cdto=s},
q{cdto=s},
);
dd( \@_, \%opts );
RunForThisOS(
info => "$opts{prefix}/$opts{host}.txt",
user => $opts{username},
pass => $opts{password},
host => $opts{host},
cdto => $opts{cdto},
prefix => $opts{prefix},
debug => 1,
cmd => "cd $opts{cdto} && ./startServer.sh @_",
);
}
sub RunForThisOS {
if( os_is('Linux')){
goto &MyLinuxRun;
}
die "Unsupported OS";
}
sub MyLinuxRun {
my( %o ) = @_;
exit dd( \%o ); # don't exit
use autodie qw/ open close /;
open my($INFO), '>', $o{info}; # autodie will die on error
print $INFO join "\n", # consider using dd
$o{info}, $o{host}, $o{cdto}, $o{cmd}, "\n";
my $ssh = Net::SSH::W32Perl->new(
$o{host},
protocol => 2,
debug => $o{debug},
);
$ssh->login( $o{user}, $o{pass} );
my($stdout, $stderr, $exit) = $ssh->cmd( $o{cmd} );
print $INFO dd( {
stdout => $stdout,
stderr => $stderr,
exit => $exit,
},), "\n";
close $INFO;
}
__END__
####
$ perl writeCodeLike.960945.pl -u user -p pass -h host -pre=refix -cdto ccddttoo argyargyarg
[
"-u",
"user",
"-p",
"pass",
"-h",
"host",
"-pre=refix",
"-cdto",
"ccddttoo",
"argyargyarg",
]
(
["argyargyarg"],
{
cdto => "ccddttoo",
host => "host",
password => "pass",
prefix => "refix",
username => "user",
},
)
{
cdto => "ccddttoo",
cmd => "cd ccddttoo && ./startServer.sh argyargyarg",
debug => 1,
host => "host",
info => "refix/host.txt",
pass => "pass",
prefix => "refix",
user => "user",
}
####
sub Main {
MyLinuxRun(
cdto => "ccddttoo",
cmd => "cd ccddttoo && ./startServer.sh argyargyarg",
debug => 1,
host => "host",
info => "refix/host.txt",
pass => "pass",
prefix => "refix",
user => "user",
);
}