快速切换DNS脚本
WEB开发经常遇到调试需求,而调试又偏偏依赖网络环境的时候,这个时候来回绑定HOST或者切换DNS未免枯燥。
前厂的童鞋有写iHost来一键切换配置,当然,类似方案挺多的,但是便捷的切换DNS服务器和搜索域的工具就不多了。
浏览器有插件可以自动切换环境,但是如果协议不是HTTP的,就无能为力了;
小组童鞋虽然开发了联调系统,可以自动切换项目的网络代理,但是如果项目在早期阶段,是无法使用的;
用路由等方案组网做小范围调试(等待基建共用调试网络),也会遇到要一次次设置DNS配置…
下面是根据Alfred switch DNS的脚本改的一个版本,扩展了设置搜索域的功能,稍稍改变了编码风格。
真实使用记得修改DNS_PROFILES中的YOUR DNS, : )
[cc lang=”csharp”]
#!/bin/bash
#
# Description: switch DNS profile quickly
# Author: kodango <dangoakachan@foxmail.com>, soulteary <soulteary@gmail.com>
#
# DNS profiles
# profile name::dns servers
DNS_PROFILES=$(cat<<EOF
DefaultDNS::empty::empty
Alibaba PublicDNS::223.5.5.5223.6.6.6::empty
V2EX PublicDNS::199.91.73.222178.79.131.110::empty
114PublicDNS::114.114.114.114114.114.115.115::empty
Google PublicDNS::8.8.8.88.8.4.4::empty
OpenerDNS::42.120.21.30::empty
YOUR DNS::192.168.123.123192.168.234.234::YOUR.DNS.SEARCH.DOMAIN
EOF
)
# Swith to matched dns profile
functionswitch_dns()
{
local MSG_ERROR_INPUT=”没有定义过的DNS服务”
local MSG_SWICH_TO=”切换 DNS 服务为”
local profile=$(echo”$DNS_PROFILES”|grep-iE”$1″)
local name server domain
name=$(echo”$profile”|awk-F::'{print $1;exit}’)
server=$(echo”$profile”|awk-F::'{print $2;exit}’)
domain=$(echo”$profile”|awk-F::'{print $3;exit}’)
if[-z”$name”];then
echo”$MSG_ERROR_INPUT: ‘$1′”
return
fi
local current_dev=$(netstat-rn|awk’/default/{print $NF}’)
local current_dev_name=$(networksetup-listnetworkserviceorder|awk”/$current_dev/{print \$3}”|tr-d’, ‘)
sudo networksetup-setsearchdomains”$current_dev_name”$domain&&
sudo networksetup-setdnsservers”$current_dev_name”$server
dscacheutil-flushcache
echo”$MSG_SWICH_TO ‘$name'”
}
switch_dns”{query}”
[/cc]
原创文章,作者:老D,如若转载,请注明出处:https://laod.cn/1540.html