#!/bin/bash
case "$1" in
-a)shift
if [ $# -lt 1 ]
then
echo 请输入参数:‘"xxx.cn A 192.168.22.22"‘
else
IFS=$‘\t\n‘
for param in [email protected]
do
a=echo ${param%%‘ ‘*}
if test cat /usr/local/etc/unbound/unbound.conf | grep $a
&>/dev/null
then
echo -e "\033[31m 域名$a 已经添加过 先用dns -d 删除\033[0m"
exit
else
var=sed -n ‘/local-data:/h;${g;p;}‘ /usr/local/etc/unbound/unbound.conf
sed -i -e " /$var/a\ local-data: \"""$param""\" " /usr/local/etc/unbound/unbound.conf
IFS=$‘ \t\n‘
fi
done
if unbound-checkconf &>/dev/null
then
systemctl restart unbound.service
else
echo 请重新检查域名格式
echo 格式:\"域名 A IP\"
x=cat /usr/local/etc/unbound/unbound.conf | grep "$1"| cut -d: -f2
echo -e "\033[31m $x \033[0m"
echo -e "\033[31m 错误域名可以使用dns -d "$x" 删除然后使用dns -a 命令添加\033[0m"
fi
fi;;
-d)shift
if [ $# -lt 1 ]
then
echo 请输入参数:‘"qq.cn A 192.168.22.22"‘
else
IFS=$‘\t\n‘
for param in [email protected]
do
sed -i -e " /\"""$param""\"/d" /usr/local/etc/unbound/unbound.conf
IFS=$‘ \t\n‘
done
if unbound-checkconf &>/dev/null
then
systemctl restart unbound.service
else
echo 请重新检查域名格式
echo 格式:\"域名 A IP\"
x=cat /usr/local/etc/unbound/unbound.conf | grep "$1"| cut -d: -f2
echo -e "\033[31m $x \033[0m"
echo -e "\033[31m 错误域名可以使用dns -d "$x" 删除然后使用dns -a 命令添加\033[0m"
fi
fi;;
-m) if [ $# -ne 3 ]
then
echo 先输入要修改的域名解析空格后输入修改后的域名解析
echo 请输入参数:‘"qq.cn A 192.168.22.22"‘ ‘"qq.cn A 192.168.55.55"‘
else
i=cat /usr/local/etc/unbound/unbound.conf | grep "$2"| cut -d: -f1
if [ $i == "local-data" ]
then
sed -i "s/^.""$2"".$/local-data: \"""$3""\"/g" /usr/local/etc/unbound/unbound.conf
else
echo "没有该域名解析,如需添加请直接使用-a选项"
exit
fi
if unbound-checkconf &>/dev/null
then
systemctl restart unbound.service
else
echo 请重新检查域名格式
echo 格式:\"域名 A IP\"
x=cat /usr/local/etc/unbound/unbound.conf | grep "$3"| cut -d: -f2
echo -e "\033[31m $x \033[0m"
echo -e "\033[31m 错误域名可以使用dns -d "$x" 删除然后使用dns -a 命令添加\033[0m"
fi
fi;;
*) echo "$1 不是有效选项"
echo " -a 添加一条dns解析记录"
echo " -d 删除一条dns解析记录"
echo " -m 修改一条dns解析记录";;
esac
优化了错误显示 直接显示错误域名。添加域名的时候增加了判断域名是否已经添加过。
-m修改的时候 还是有点bug 当查找不到的时候 会提示语法错误 不影响使用
直接将上面的shell脚本 复制到本地 根据自己安装的方式修改 unbound.conf的位置,
保存
vi /root/dns.sh
chmod u+x /root/dns.sh
ln /root/dns.sh /usr/bin/dns
添加 dns -a
删除 dns -d
修改 dns -m
原文地址:http://blog.51cto.com/mnlight/2114847