web-dev-qa-db-ja.com

Mac OS Xの「hosts」ファイルですが、他のファイルを含めることはできますか?

頻繁に使用するさまざまなネットワークにアクセスするときに、ネットワーク設定、hostsファイルの内容、および/ etc/resolverファイルを構成するための自動化スクリプトに取り組んでいます。

発生する可能性のある組み合わせがいくつかあり、すべてホストファイルを変更する必要があります。さまざまな組み合わせのマトリックスを設定して、共有設定をあちこちに複製する必要はありません。

たとえば、私はon作業ネットワーク、つまり建物内にあるか、VPN経由でアクセスする場合があります。どちらの場合も、ネットワークが正しく機能するように、hostsファイルにいくつかの設定を追加する必要があります。共有されているものとされていないものがあります。さらに、VPNを使用している場合は、自宅にいる可能性があります。その場合、hostsファイルに他の設定がいくつかありますまた追加したい。

そのため、「自宅、VPN経由で仕事にアクセスする」と「自宅、仕事にアクセスしない」などのファイルを1つ作成する代わりに、他のファイルを含める方法はありますか?

たとえば、次の架空の構文が機能するとします。

#!include home.hosts
#!include work.hosts

127.0.0.1 localhost
::1 localhost

このようにして、これら2つの余分なファイルの一方または両方の内容を単純にクリアし、残りをそのままにしておくことができます。

または、それを除けば、これらのファイルなどのファイルを新しいhostsファイルに連結する小さなスクリプトを作成するよりも、これを行うためのより良い方法があります。自動化のセットアップの一環として、最初にこれらの余分なファイルのいくつかをクリアします。次に、スクリプトを呼び出して、これらの余分なファイルから単一のホストファイルを再構築しますか?

10

インクルードの可能性については知りません。ただし、hostsファイルにセクションを作成し、スクリプトを使用して、sedなどを使用して各セクションの行にコメントを付けることです。

このようにあなたのファイルは次のようになります

#%%%HOME.HOSTS%%%
#Put here the contents of home.hosts
#%%%WORK.HOSTS%%%
#Put here the contents of work.hosts

#%%%ALWAYS_ON%%%
127.0.0.1 localhost
::1 localhost

編集:フィールドを変更するための簡単な試みを追加します。

HOME.HOSTSのコメントを削除する

 sed -i '/#%%%HOME.HOSTS/,/#%%%/s/^#\([^%]\)/\1/g' hosts

HOME.HOSTSへのコメントを元に戻す

 sed -i '/#%%%HOME.HOSTS/,/#%%%/s/^\([^#]\)/#\1/g' hosts

これは基本バージョンであり、ニーズに合わせて調整する必要があります。

7
Karolos

OpenDirectoryServiceへの切り替えにより、dsclが機能しなくなったため、1つのオプションはghostを使用することです。

Sudo gem install ghost

Sudo ghost add fw.test.se 10.0.0.1

...このセクションを/ etc/hostsに追加します。

# ghost start
10.0.0.1 fw.start.se
# ghost end

ホストファイルの#ghostセクションをクリアするには、次を使用します(これにより、ホストのリストを新しいものに簡単に置き換えることができます)。

Sudo ghost empty

ゴーストの詳細については、こちらをご覧ください: https://github.com/bjeanes/ghost

0
Campell

異なるLAN/WAN hostsファイルの設定を使用して3つの異なる場所でサービスにアクセスする必要がある場合、同様の使用例がありました。上記のKarolosの回答は1つの可能な解決策です。私のアプローチはここにあります。

1- ref to http://Apple.stackexchange.com/q/139267/74657

2-場所ごとに作成されたhostsファイル(hosts.work、hosts.home、hosts.vendor)

3-ここでsolozのスクリプトを使用して( https://github.com/slozo/Network-listener )、ホームネットワークに接続するたびに、簡単なスクリプトを実行してホストファイルを切り替えます。

最も簡単な方法は

mv hosts.home /etc/hosts

または、sedを使用して上記のKarolosの回答を自動化し、上記のsolozのスクリプトを使用して簡単に検出して実行できる特定のSSIDに接続するときに既存のファイルを更新することもできます。

それが主題の問題につまずく人を助けることを願っています。

0
user728650