続・DNSレコードを問い合わせるシェルスクリプト
このスクリプトを発展させました。
スクリプト内容
- dns.sh
#!/bin/bash
# ドメイン名の入力を求める
read -p "ドメイン名を入力してください: " query
# 入力が未設定の場合の処理
if [ -z "$query" ]; then
# デフォルトのDNSで問い合わせを行う
default_dns=$(dig +short A +short myip.opendns.com @resolver1.opendns.com)
echo "デフォルトのDNS: $default_dns"
else
# ユーザーが指定したDNSで問い合わせを行う
read -p "問い合わせるDNSを指定してください(空白Enterの場合はデフォルトのDNSを使用します): " dns_server
if [ -z "$dns_server" ]; then
dns_server="@resolver1.opendns.com"
else
dns_server="@$dns_server"
fi
# Aレコードの問い合わせ
a_record=$(dig +short A $query $dns_server)
if [ -z "$a_record" ]; then
a_record="未設定です"
fi
# TXTレコードの問い合わせ
txt_record=$(dig +short TXT $query $dns_server)
if [ -z "$txt_record" ]; then
txt_record="未設定です"
fi
# MXレコードの問い合わせ
mx_record=$(dig +short MX $query $dns_server)
if [ -z "$mx_record" ]; then
mx_record="未設定です"
fi
# レコードの問い合わせの種類を選択するプロンプトを表示
echo "問い合わせるレコードの種類を選んでください:"
echo "1. Aレコード"
echo "2. TXTレコード"
echo "3. MXレコード"
echo "4. すべてのレコード"
# レコードの種類をユーザーに選択させる
read -p "選択してください (1, 2, 3, または 4): " record_type
# ユーザーの選択に応じて問い合わせ結果を表示
case $record_type in
1)
# Aレコードの問い合わせ結果を表示
echo "Aレコード: $a_record"
;;
2)
# TXTレコードの問い合わせ結果を表示
echo "TXTレコード: $txt_record"
;;
3)
# MXレコードの問い合わせ結果を表示
echo "MXレコード: $mx_record"
;;
4)
# すべてのレコードを表示
echo "Aレコード: $a_record"
echo "TXTレコード: $txt_record"
echo "MXレコード: $mx_record"
;;
*)
# 無効な選択が入力された場合のエラーメッセージ
echo "無効な選択です。1, 2, 3, または 4 を入力してください。"
;;
esac
fi
追加した内容
「どこのDNSサーバに問い合わせを行うか」です。
- ローカルDNSに問い合わせたい場合
- 冗長化を組んでいるDNSのセカンダリーに反映されているかを確認したい場合
- 世界的なDNSでもレコードが引けるか
を確認するケースが多々あったので、これを追加です。今回ChatGPTが指定したのはopendnsなので、
DNSサーバ名 | 主なIPアドレス |
---|---|
Google Public DNS | 8.8.8.8 |
Cloudflare DNS | 1.1.1.1 |
Quad9 | 9.9.9.9 |
Level 3 DNS | 4.2.2.1 |
といったDNSサービスを変数に入れればデフォルトを変えてくれます。