Unix SSH:在两台服务器上查找具有不同路径的文件
我有服务器A和服务器B。 我想在两台服务器上找到命令,但路径不同。
目前我创建的代码如下:
dir1=( $DATA_DIR/sdfgv $DATA_DIR/1wefgg $DATA_DIR/3fdsevg );
dir2=( $DATA_DIR/asdf $DATA_DIR/sdfewfT $DATA_DIR/efergvfw );
timestamp=$(date +%Y%m%d%H%M%S);
report_name=Audit_Report_${timestamp}.txt
uname=xyz
server=( serv1 serv2);
for j in ${server[@]};
do {
if [ "$j" == "serv1 " ]
then
for i in ${dir1[@]};
do {
Size=`ssh -q $uname@$j "find $i -type f -mtime +1 -name '*.gz' -printf '%s + ' | dc -e0 -f- -ep"`;
echo " $j $i $Size "
}
done
else
for i in ${dir2[@]};
do {
Size=`ssh -q $uname@$j "find $i -type f -mtime +1 -name '*.gz' -exec du -k {} ; | awk '{ total += $ 1} END{print total/1024;}'"`;
echo " $j $i $Size "
}
done
fi
}
done
这段代码工作的很好,但我想要的东西可以是通用的,如果没有其他的服务器名称。
我不想使用其他服务器名称。
两台服务器都有不同的目录路径来搜索
请提出一些建议。
谢谢 !
Bash函数将有所帮助。 也许一个用于确定哪个目录用于哪个服务器,然后用于执行find命令。 像这样的东西(伪代码,未经测试):
getDirs() {
if [ $1 == 'server1' ]; then
echo $dir1
fi
if [ $1 == 'server2' ]; then
echo $dir2
fi
}
findFiles() {
local srv=$1
shift
local dir=$1
shift
local findArgs=$@
echo $(ssh -q $uname@$srv "find $dir $findArgs")
}
for srv in ${server[@]};
do
dirs=$(getDirs $srv)
for d in $dirs
do
findFiles $srv $d -type f -mtime +1 -name '*.gz'
done
done
链接地址: http://www.djcxy.com/p/78071.html
上一篇: Unix SSH : Find files with different path on two servers
下一篇: Grep a word and find its Count from log file for different times