符號轉義解決SSH遠程命令執行的問題
場景:
服務器 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執行的命令中,是否存在字符需要轉義,命令的執行結果就可能出現問題。

浙公網安備 33010602011771號