Linux

如何從 shell 腳本修改 /etc/hosts?

  • October 15, 2020

我需要更改一些hosts條目 - 例如,希望更新主機hostsactive.vm匹配目前啟動的 VM 的 IP(使用一些測試設備)。VM 中的來賓軟體將機器的地址報告回主機,我需要根據該資訊更新 /etc/hosts - 總是有一些時間來編寫另一個守護程序/cronjob,但想使用現有的東西來修復hosts具有愚蠢語法的條目hostname current_ip.

有人向我推薦了這個bind-tools包裹,但是 - 它的nsupdate| host根本不適合這個任務。..

更新:仍在尋找綁定套件的東西,但至少動態再生似乎是最好的解決方案,augtool 也不錯。

更新:由於我的懶惰,現在不打算使用動態再生,所以開始在 cronjob 中使用 augtool,它讀取 webserver 的訪問日誌以獲取最新 IP - 在執行 Windows 的 VM 上,整個監控解決方案只是一個載入的 webbrowser來自主機的特定 url,並且有一個小的重新載入間隔

看看奧格亞斯。它有一個現成的主機文件解析器/序列化器(甚至在他們的快速指南中),並帶有一個簡單的更改工具(augtool)。

我寧願不涉及/etc/hosts解析等。我只需創建一個名為的目錄/etc/hosts.d/並編寫一些腳本,該腳本需要:

  • ip
  • name
  • 別名

使用一 (1) 行創建一 (1) 個文件。文件名將是<ip>.host然後cat /etc/hosts.d/*host > /tmp/hosts.new && mv /tmp/hosts.new /etc/hosts. 也許添加一個incron事件來監視/etc/hosts.d/目錄並/etc/hosts在發生任何事情時重新生成,這樣你也可以擺脫舊條目。

引用自:https://serverfault.com/questions/281982