perl ssh scp 操作远程机器进行验证
#!/usr/bin/perluse strict;
use FindBin qw($Bin);
my $websiteName = $ARGV;
if (!$websiteName){
die "you need to input the website name as a parameter,run it like this:validationOnremoteserver.pl zeel_jp\n";
}
# ALLOW_SPACE_AT_LEAST = xxG
my $ALLOW_SPACE_AT_LEAST = 20;
my $local_feedPath = "/home/kankan1218/sourcecode/data/$websiteName/feed";
my $local_validator_result_path = '/home/kankan1218/validator_result';
my $remoteserver_temp_dir_path = "/home/kankan1218/validator/$websiteName";
my $remoteserver_validatorPath = '/home/kankan1218/validator.jar';
my $javaPath = '/usr/java/jdk/bin/java';
eval {
# disk useage information
my $dfInfo = `ssh kankan1218\@ss-remoteserver "df -h"`;
# when remoteserver's space is not enough,exit
if ( $dfInfo =~ m/\d+G\s+\d+G\s+(\d+)G.*?\/\n/ ) {
my $AvailSpace = $1;
if ( $AvailSpace < $ALLOW_SPACE_AT_LEAST ) {
print "remoteserver's space is not enough\n";
exit;
}
}
else {
print "get AvailSpace failed\n";
exit;
}
if ( -e $local_feedPath ) {
# before copy ,empty unuseful folder
system("ssh kankan1218\@ss-remoteserver rm -rf $remoteserver_temp_dir_path");
# make dir on remoteserver
# -p means
#&makeRemoteDir($remoteserver_temp_dir_path);
system("ssh kankan1218\@ss-remoteserver mkdir -p $remoteserver_temp_dir_path");
if ( not -e $local_validator_result_path ) {
&makeDir($local_validator_result_path);
}
#copy feed dir from local to remoteserver
system("scp -r $local_feedPath kankan1218\@ss-remoteserver:$remoteserver_temp_dir_path");
#do validator
my $resutPath = "$remoteserver_temp_dir_path/$websiteName.result";
my $feedFilePath = "$remoteserver_temp_dir_path/feed/$websiteName.xml";
system("ssh kankan1218\@ss-remoteserver '$javaPath -jar $remoteserver_validatorPath $feedFilePath >$resutPath'");
#copy result from remoteserver to local
system("scp kankan1218\@ss-remoteserver:$remoteserver_temp_dir_path/$websiteName.result $local_validator_result_path ");
# delete feed dir
system("ssh kankan1218\@ss-remoteserver rm -rf $remoteserver_temp_dir_path");
}
else {
print "feedPath on local doesn't exist:$local_feedPath\n";
exit;
}
};
if ($@) {
print "running validator of $websiteName failed:$@\n";
}
else {
print "running validator of $websiteName successfully end,the validator result is in $local_validator_result_path\n";
}
sub makeDir {
my $path = shift;
my $filename;
$path =~ s/\\/\//g;
my @folder = split( '/', $path );
my $dir;
foreach my $folder (@folder) {
$dir .= $folder . '/';
if ( not -e $dir ) {
mkdir( $dir, 0777 );
}
}
return 1;
}
#sub makeRemoteDir {
#
#system("scp $Bin/makeDir.pl kankan1218\@ss-remoteserver:~");
## execute makeDir.pl on remoteserver to make temp dir
#system('ssh kankan1218\@ss-remoteserver "perl ~/makeDir.pl $remoteserver_temp_dir_path"');
## delete makeDir.pl
#system("ssh kankan1218\@ss-remoteserver rm ~/makeDir.pl");
#
#}
页:
[1]