如何从 shell 脚本修改 /etc/hosts?

如何从 shell 脚本修改 /etc/hosts?

我需要更改一些hosts条目 - 例如,希望更新主机hostsactive.vm匹配当前启动的 VM 的 IP(使用一些测试设备)。VM 中的客户软件将机器的地址报告给主机,我需要根据该信息更新 /etc/hosts - 总是有时间编写另一个守护进程/cronjob,但想使用现有的东西来修复具有hosts愚蠢语法的条目hostname current_ip

有人向我推荐了这个bind-tools软件包,但是 - 它nsupdate根本host不适合这项任务。...

更新:仍然在寻找来自 bind suite 的某些东西,但至少动态再生似乎是最好的解决方案,而且 augtool 也不错。

更新:由于我的懒惰,现在不打算使用动态再生,因此开始在 cronjob 中使用 augtool,它读取 Web 服务器的访问日志以获取最新 IP - 在运行 Windows 的虚拟机上,整个监控解决方案只是一个从主机加载特定 URL 并具有较小重新加载间隔的 Web 浏览器

答案1

看一眼奥杰阿斯。它有一个用于 hosts 文件的现成解析器/序列化器(甚至在他们的快速导游指南中),并附带一个进行更改的简单工具(augtool)。

答案2

我宁愿不涉及/etc/hosts解析等内容。我只需创建一个名为的目录/etc/hosts.d/并编写一些脚本即可:

  • 知识产权
  • 姓名
  • 别名

创建一个 (1) 个文件,其中包含一 (1) 行。文件名为,<ip>.host然后cat /etc/hosts.d/*host > /tmp/hosts.new && mv /tmp/hosts.new /etc/hosts。也许可以添加一个incron事件来监视/etc/hosts.d/目录,并/etc/hosts在发生某些事情时重新生成,这样您也可以摆脱旧条目。

相关内容