得到一堆带有域名限定名称的文件,希望用它们的 IP 替换它们。
我可以用一行 shell (bash) 来做到这一点吗?
典型的输入文件(nagiosconf):
define host {
host_name host1
use model
alias myalias
address myhost.domain
}
define service {
host_name hostname
use Modele_Ping
}
这个想法是用它的IP(由nslookup或其他工具返回)替换“myhost.domain”。
我总是可以编写脚本,但我想知道是否有一种 Unix 智能方法来做到这一点。
答案1
这可能需要一些调整,但是:
<source_file while read -r line; do
part=$(echo "$line" | egrep -o '\w+\.\w+')
if [[ $? == 0 ]]; then
addr=$(dig $part +short | head -n1)
echo "${line/$part/$addr}"
else
echo "$line"
fi
done
这将查找“part1.part2”形式的任何域。搞乱正则表达式来改变它试图查找的内容。它每行只会查找一个地址。