我試圖從許多文件中grep IP,在DNS中查找它們並將它們與已存在於相同文件中的主機名進行比較以確保是正確的。然後打印出任何錯誤的東西。如何比較兩列IP和主機名從bash中的多個文件grepped
我已經收集到了我需要將信息放入數組中,並以某種方式區分它們。
這是我可怕的bash代碼不起作用。我敢肯定,至少我的循環是錯誤的:
declare -a ipaddr=(`grep -h address *test.com.cfg | awk '{print $2}'`)
declare -a host_names=(`grep -h address *test.com.cfg | awk '{print $2}'`)
for i in "${ipaddr[@]}"
do
lookedup_host_names=($(/usr/sbin/host ${ipaddr[@]} | awk '{print $5}' | cut -d. -f1-4 | tr '[:upper:]' '[:lower:]'))
done
if [[ -z diff <(printf "%s\n" "${lookedup_host_names[@]}"| sort) <(printf "%s\n" "${host_names[@]}"| sort) ]]
then
printf "%s\n" "${lookedup_host_names[@]}"
fi
有幾個注意事項需要考慮。 反向主機查找可能會返回一個主機名,但該文件可能包含CNAME。 正向查找將返回所有CNAME而不僅僅是IP地址。 最簡單的方法是使用'gethostip'使用'-d'選項來返回IP地址,無論CNAME如何。 這個唯一的警告是多個IP。使用'gethstip -d'時,具有多個IP地址的DNS名稱將僅返回一個IP地址。 – alvits