도메인 자격을 갖춘 이름을 가진 파일 묶음을 얻었고 이를 해당 IP로 바꾸고 싶었습니다.
한 줄의 쉘(bash)로 이 작업을 수행할 수 있습니까?
일반적인 입력 파일(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" 형식의 모든 도메인이 검색됩니다. 찾으려는 내용을 변경하기 위해 정규식을 조작합니다. 한 줄에 하나의 주소만 찾습니다.