Linux
如何從 shell 腳本修改 /etc/hosts?
我需要更改一些
hosts
條目 - 例如,希望更新主機hosts
以active.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
在發生任何事情時重新生成,這樣你也可以擺脫舊條目。