web-dev-qa-db-ja.com

シェルスクリプトから/ etc / hostsを変更する方法は?

いくつかのhostsエントリを変更する必要があります。たとえば、hostsを更新してactive.vmホストを現在起動しているVM)のIPと一致させる必要があります。 =(一部のテストアプライアンスを使用)VM内のゲストソフトウェアはマシンのアドレスをホストに報告し、その情報に基づいて/ etc/hostsを更新する必要があります-別のデーモンを作成する時間は常にあります/ cronjobですが、hostname current_ipのダム構文でhostsエントリを修正するために既存のものを使用したいと考えていました。

誰かが私にbind-toolsパッケージを勧めてくれましたが、そのnsupdate | Hostはタスクにまったく適していません。 ..

更新:バインドスイートから何かを探していますが、少なくとも動的再生が最善の解決策のようであり、augtoolも素晴らしいです。

更新:私の怠惰のため、動的再生は現在使用する予定がないため、最新のIPのWebサーバーのアクセスログを読み取るcronjobでaugtoolの使用を開始しました-Windowsを実行するVMでは、監視ソリューション全体はホストマシンから特定のURLをロードし、リロード間隔が短いWebブラウザ

5
kagali-san

augeas を見てください。これには、hostsファイル用の既製のパーサー/シリアライザー(クイックツアーガイドにもあります)があり、変更を加えるためのシンプルなツール(augtool)が付属しています。

8
Bobkare

構文解析などの観点から、/etc/hostsには触れたくありません。 /etc/hosts.dを作成して、次のスクリプトを作成します。

  • ip
  • 名前
  • エイリアス

1行で1つのファイルを作成します。ファイル名は<ip>.Host、次にcat /etc/hosts.d/*Host > /tmp/hosts.new ** mv /tmp/hosts.new /etc/hostsになります。おそらく、/etc/hosts.dディレクトリを監視し、何かが発生するたびに再生成するincronイベントを追加します。そうすれば、古いエントリも削除されます。

9
Martin M.