【问题标题】:Any way to replace a DNS Server address in my /etc/resolv.conf using python in Ubuntu 12.04?在 Ubuntu 12.04 中使用 python 替换我的 /etc/resolv.conf 中的 DNS 服务器地址的任何方法?
【发布时间】:2013-07-23 17:25:09
【问题描述】:

在 python 中开发一个可以将旧的 DNS 服务器地址替换为 Ubuntu 12.04 中的新地址的程序的最佳方法是什么?

更新: 基本上我需要的是一种更新我的 resolv.conf 文件内容的方法,以便我可以替换其中配置的名称服务器。

例如,我的 resolv.conf 中有:

 nameserver 10.0.0.1
 nameserver 10.0.0.2

我需要以某种方式修改以获得这些值:

 nameserver 10.0.0.3
 nameserver 10.0.0.4

我需要使用 python(或任何脚本语言,甚至通过命令行)来完成此操作,因为我需要在必须在信息亭模式 Xubuntu 中运行的用户友好窗口中执行此操作。

**注意:

到目前为止,我已经尝试找到一个可以实现此目的的 ubuntu 命令,但我还没有找到。

我也尝试过修改 /etc/resolv.conf 但 Python 无法修改文件,所以我需要删除文件并使用新内容创建文件,但是我无权执行此操作(已经尝试了 chmod 777 和 chattr -a 但它们不起作用)

【问题讨论】:

  • 不清楚您在这里要做什么。您提到resolv.conf,它用于配置您的解析器,但通常与“dns 条目”没有任何关系。有各种各样的 DNS 服务器,其中一些支持动态更新。你的服务器是什么? Python当然可以修改文件;有很多示例演示基本文件 i/o。如果您的服务器支持通过 DDNS 进行 DNS 更新,您可以使用nsupdate 命令。
  • 对不起,这就是我的意思,我想修改我的解析器@larsks。我会更新我的问题,以便更清楚谢谢。您能告诉我任何修改文件的方法,而不必删除原始文件并用同名文件替换它吗?我没有使用服务器,它只是一台在 kiosk 模式下运行应用程序的笔记本电脑,我希望此应用程序修改该文件。
  • 我不太清楚:你真的有权修改这个文件吗?因为如果你不这样做,你就会陷入困境。通常,只有root 用户可以修改此文件。此外,如果您可以更新您的问题以准确显示您想要做什么(例如,初始状态和期望的最终状态),我们可能会更有帮助。
  • 我没有权限.. 好吧,我给了我的文件一个 chmod 777,我可以修改它,但到目前为止我没有使用 python,因为我发现的每个修改文件的示例都涉及删除和制作该文件再次。好的,我会尽量在我的问题上更具体一点。

标签: python dns ubuntu-12.04


【解决方案1】:

对于此类编辑任务,sed 通常是您最好的朋友。为了完成您的示例,以下内容将起作用:

sed -i '
  s/10\.0\.0\.1/10.0.0.3/
  s/10\.0\.0\.2/10.0.0.4/
' /etc/resolv.conf

这使用搜索和替换运算符s//-i 标志导致sed 修改文件,而不是在标准输出上打印修改后的版本。

请注意,我在匹配表达式中转义了句点 (.),因为在 sed 用于匹配语法的正则表达式中,. 字符是通配符。

但是,如果您只是在两种不同的配置之间切换,只需替换文件可能是最简单的解决方案:

cp /etc/resolv.conf.config1 /etc/resolv.conf

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 2016-08-22
    • 2016-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多