我想计算远程服务器上给定类型的文件数。为此,我需要ssh并运行命令以对远程服务器上的文件进行计数,然后以某种方式返回该值。我考虑过仅打印值并尝试捕获该输出
到目前为止,我有:
START=0
LAST=5
ssh -i $KEY $USERNAME@$HOST << EOF
N_FILES=0;
for (( d=$START; d<=$LAST; d++ ))
do
check_day=`date +"%Y-%m-%d" -d "$d day ago"`
FILES_FOUND="\$(find &DIR | grep $check_day | wc -l)"
N_FILES=\$(( \$N_FILES + \$FILES_FOUND ))
done
echo $N_FILES
EOF
N_FILES=$?
上面的代码运行正常,但是当在服务器中实际发现有文件以这种方式捕获输出时,结果为0。有人可以帮忙吗?
您可以简单地将SSH命令的结果分配给一个变量:
IFS="" N_FILES=$(ssh -Ti $KEY $USERNAME@$HOST << EOF
N_FILES=0;
for (( d=$START; d<=$LAST; d++ ))
do
check_day=`date +"%Y-%m-%d" -d "$d day ago"`
FILES_FOUND="\$(find &DIR | grep $check_day | wc -l)"
N_FILES=\$(( \$N_FILES + \$FILES_FOUND ))
done
echo $N_FILES
EOF
)
echo $N_FILES
注意:N_FILES
before sshN_FILES
与ssh命令中使用的命令不同。
但是它的值(假设其他ssh命令都没有任何输出)将相同。
在-T
这里似乎很重要:无需请求伪TTY将输出分配给变量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句