我有一个安装HOSTA,其中安装了所有软件应用程序组件。我编写了一个脚本,如果从同一主机(HOSTA)运行它就能完美运行。我正在做的操作类似于截断文件,读取来自文件等的模式,但在其他情况下,所有组件可能不安装在同一主机中。可能是组件A在HOSTA上,组件b和c在HOSTB上。如何编写脚本来处理这种情况?
我正在执行操作的一些代码。如果我提供truncateLogfile(/ path / to / file),那么它应该截断,无论它是在本地计算机还是远程计算机上。
sub truncateLogfile {
my $pathFile = shift;
if (! -e $pathFile ){ warn "The [$pathFile] does not exist\n" } ;
system("truncate $pathFile --size 0") == 0 or warn "Failed ";
}
sub folderClean {
my $self = shift;
my $pathFolder = shift;
opendir (DIR,$pathFolder) or warn "[!] Failed to open the Dir $!";
my @files = map { $pathFolder . '/' . $_ }
grep { !/^\.{1,2}$/ }
readdir (DIR);
closedir (DIR);
print "\nNo files present in $pathFolder\n" if !@files;
foreach my $file (@files) {
print "Removing $file...\n";
unlink "$file";
}
}
答案 0 :(得分:0)
如果我对您的问题的理解是正确的,则要求是从一个主机运行您的脚本,但希望在多个主机上执行文件操作,而不知道该文件夹/文件可用的主机。有很多方法可以处理。
一个简单的方法就是拥有你的系统"在for循环中执行命令,每次迭代都应该进入相应的主机。伪代码如下所示。
my @hosts = (hostA, hostB, hostC, hostD); # Assume that you have these four hosts.
foreach (@hosts) {
system("ssh $_ truncate $pathFile --size 0") == 0 or warn "Failed ";
}
上面的代码将让您的程序遍历所有主机并执行所需的操作。我使用过' ssh'在这个例子中提到一个安全的shell登录。根据典型的登录方法,您可以使用sqsh,rsh等代替ssh。
即使多个主机中有相同的文件,上述方法仍然有效。我希望你的要求没问题。