2つの配列を結合し、重複排除する関数
キーワード「$keyword1, $keyword2」を指定し、対象のログファイル「$logfile」からIPアドレスを抽出して重複排除した配列を戻り値として返す。
最後にIPアドレスのリストをファイル「$outfile」に書き出す。
ログ上ではIPは以下の様になっている。
Sep 29 xx:xx:xx ~略~ fqdn[xxx.xxx.xxx.xxx]: ~略~
function get_iplist() {
local l_array1=($(grep "${keyword1}" ${logfile} | \
awk '{print $11}' | \
sed -e 's/.*\[//' -e 's/\].*//'\
))
local l_array2=($(grep "${keyword2}" ${logfile} | \
awk '{print $10}' | \
sed -e 's/.*\[//' -e 's/\].*//'\
))
local l_ip_array=(
$({
printf "%s\n" "${l_array1[@]}"
printf "%s\n" "${l_array2[@]}"
} | sort --version-sort --unique)
)
echo "${l_ip_array[@]}"
}
ip_array=(`get_iplist`)
echo "Detect IP Count: ${#ip_array[@]}"
for i in ${ip_array[@]}; do
echo "${i}"
done > ${outfile}