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

kag*_*san 6 domain-name-system linux bash cron hosts-file

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

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

更新:仍在从绑定套件中寻找一些东西,但至少动态再生似乎是最好的解决方案,而且 augtool 也不错。

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

Mar*_* M. 10

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

  • ip
  • 姓名
  • 别名

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


小智 9

看看augeas。它有一个现成的主机文件解析器/序列化器(甚至在他们的快速指南中),并带有一个简单的工具来进行更改(augtool)。