linux – 如何通过命令行添加新的DNS服务器?
我正在尝试为OS X编写一个bash脚本,它将更改为当前连接添加名称服务器.我有更改DNS服务器的命令,但我需要保留当前的namesever. 我认为我可以从resolv.conf文件中获取当前的名称服务器,然后在命令中以某种方式使用它. 我目前已将此名称服务器更改为8.8.8.8: networksetup -setdnsservers AirPort 8.8.8.8 我需要做的是从/etc/resolv.conf中检测当前的名称服务器,然后在上面的命令中使用该值作为参数.例如,说我当前的resolv.conf看起来像这样: nameserver 9.9.9.9 我希望以上命令执行此操作: networksetup -setdnsservers AirPort 9.9.9.9,8.8.8.8 有没有办法使用正则表达式从resolv.conf中提取IP,然后以某种方式将其用作networksetup命令中的参数? 解决方法经过最低限度的测试;为了获得最佳效果,在每个[]中,在括号内添加一个选项卡:networksetup -setdnsservers AirPort $(sed -ne 's/^[ ]*nameserver[ ]+([.:0-9A-Fa-f]+)/1/p' /etc/resolv.conf) sed表达式从以nameserver开头,后跟IPv4或IPv6地址的行中提取地址. $()构造将sed的输出插入到networksetup的命令行中. 如果/etc/resolv.conf中有可能没有任何名称服务器行,这是一个相对简单的方法: nameservers=$(sed -ne 's/^[ ]*nameserver[ ]+([.:0-9A-Fa-f]+)/1/p' /etc/resolv.conf) if [ -z "$nameservers" ]; then nameservers=empty; fi networksetup -setdnsservers AirPort $nameservers (编辑:PHP编程网 - 黄冈站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |