ドメイン資格のある名前のファイルの束を取得し、それを対応するIPに変更したいと思いました。
1行のシェルでこれを実行できますか?
一般的な入力ファイル(nagiosconf):
define host {
host_name host1
use model
alias myalias
address myhost.domain
}
define service {
host_name hostname
use Modele_Ping
}
アイデアは、「myhost.domain」を対応するIP(nslookupまたは他のツールから返される)に置き換えることです。
私はいつでもスクリプトを書くことができますが、これを行う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」形式のすべてのドメインが検索されます。検索する内容を変更するために正規表現を操作します。 1行に1つのアドレスのみを探します。