#!/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");
#
#}
分享到:
相关推荐
ssh,scp 连接远程ssh非22端口的服务器方法
使用ssh、scp不需要密码。刚好项目遇到这个问题,学学挺好的。
Renci.SshNet.dll及其文档和实现SSH、SCP、FTP等操作的小例子
Linux下SSH及SCP命令简单使用,如果通过ssh远程到其他linux机器、通过scp命令进行文件传输
EasySSH - 容易通过SSH和SCP下载远程执行的Golang包
用python 实现ssh的执行远端命令和scp的不同机器文件传输功能。代码简练易懂。
网络工程师必备远程神器,Xshell5和Xftp5打包下载,双击后直接运行就可以了
ssh scp sshd..forandroid
SSH-SCP使用方法 ,如何不使用密码在服务器之间传输文件
scp是 secure copy的缩写, scp是Linux系统下基于ssh登陆进行安全的远程文件拷贝命令。Linux的scp命令可以在Linux服务器之间复制文件和目录。 使用语法: scp [参数] [源路径] @IP:/目标路径 scp 参数如下: -1:...
在java里可以通过Ganymed SSH-2, Expect4j等实现ssh登录,由于Ganymed SSH-2是纯java实现,并且可以实现scp,sftp等,因此我们采用Ganymed SSH-2 1> 下载安装 从http://code.google.com/p/ganymed-ssh-2/ 下载...
使用scp向指定的机器列表指定路径复制文件的脚本,可用于集群批量操作;
通过shell脚本执行scp和ssh命令
PenguiNet 企鹅。优秀的Telnet SSH SCP工具。很小很强大!
NULL 博文链接:https://crane-ding.iteye.com/blog/335153
C#的linux-ssh&scp;封装,可远程登录linux执行命令和进行文件传输
SSH中SCP命令的使用,举例说明清楚易懂.
Java运用ganymed-ssh2-build210.jar包远程连接操作linux服务器 (SCP和SFTP的运用)
Renci.SshNet.dll及其实现SSH、SCP、FTP等操作的小例子
可直接使用,里面有十几个DEMO,包括SSH,SCP,可直接作为SSH终端访问LINUX服务器;除非之外还可以使用已经封装好的类直接调用,操作封装在类SshExe。这些源码很简单,可直接用,很方便!!