场景:
服务器 A B C D 上存在一些日志,日志中的每行包含了日期、日志级别、日志信息等。
现在要求从跳板机 X 获取这四台服务器上的数据,并通过规则(如日期)筛选,汇总到一个文件中。
日志内容如下所示:
2022-06-27 aaa
2022-06-28 aaa
2022-06-28 bbb
标准答案:
#!/bin/sh
Here is Server A
YYYYMMDD=$(date "+%Y-%m-%d")
filename=/tmp/output.txt
iplist=(
"x.x.x.x"
"x.x.x.x"
"x.x.x.x"
"x.x.x.x"
)
> $filename
for ip in ${iplist[@]}; do
ssh $ip "grep $YYYYMMDD /path/to/log.log | awk '{print \$2}' | sort | uniq" >> $filename
# or use
# ssh $ip "grep $YYYYMMDD /path/to/log.log" | awk '{print $2}' | sort | uniq >> $filename
done
可能出现的问题:
如果没有关注到,远程SSH执行的命令中,是否存在字符需要转义,命令的执行结果就可能出现问题。
知识点:
ssh远程执行命令的符号转义问题 – IUNI_JM – 博客园 (cnblogs.com)
Original: https://www.cnblogs.com/cathonzhd/p/16418538.html
Author: Cathon
Title: 符号转义解决SSH远程命令执行的问题
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/610408/
转载文章受原作者版权保护。转载请注明原作者出处!