`
kankan1218
  • 浏览: 272316 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

perl ssh scp 操作远程机器进行验证

    博客分类:
  • perl
阅读更多
#!/usr/bin/perl
use strict;
use FindBin qw($Bin);

my $websiteName = $ARGV[0];

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");
#	
#}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics