linux – 如何通过命令行添加新的DNS服务器?

前端之家收集整理的这篇文章主要介绍了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
原文链接:https://www.f2er.com/linux/398167.html

猜你在找的Linux相关文章