![如何从 shell 脚本修改 /etc/hosts?](https://linux22.com/image/553092/%E5%A6%82%E4%BD%95%E4%BB%8E%20shell%20%E8%84%9A%E6%9C%AC%E4%BF%AE%E6%94%B9%20%2Fetc%2Fhosts%EF%BC%9F.png)
我需要更改一些hosts
条目 - 例如,希望更新主机hosts
以active.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
在发生某些事情时重新生成,这样您也可以摆脱旧条目。