Kann ich in die „Hosts“-Datei von Mac OS X andere Dateien einbinden?

Kann ich in die „Hosts“-Datei von Mac OS X andere Dateien einbinden?

Ich arbeite an einigen Automatisierungsskripten zum Konfigurieren meiner Netzwerkeinstellungen, Hostdateiinhalte und /etc/Resolver-Dateien beim Zugriff auf die verschiedenen Netzwerke, zwischen denen ich häufig wechsele.

Es gibt einige Kombinationen, die alle Änderungen an der Hosts-Datei erfordern, und ich möchte vermeiden, eine Matrix mit unterschiedlichen Kombinationen einrichten zu müssen und die gemeinsamen Einstellungen überall zu duplizieren.

Ich könnte zum BeispielAndas Arbeitsnetzwerk, d. h. im Gebäude, oder ich kann über VPN darauf zugreifen. In beiden Fällen muss ich der Hosts-Datei einige Einstellungen hinzufügen, damit das Netzwerk ordnungsgemäß funktioniert. Einige werden gemeinsam genutzt, andere nicht. Wenn ich über VPN bin, bin ich möglicherweise zu Hause. In diesem Fall gibt es einige andere Einstellungen in der Hosts-Datei.Auchhinzufügen möchten.

Daher hoffte ich, dass es für mich eine Möglichkeit gibt, andere Dateien einzubinden, anstatt eine Datei für „Zuhause, Zugriff auf die Arbeit über VPN“ vs. „Zuhause, kein Zugriff auf die Arbeit“ usw. zu erstellen.

Nehmen wir zum Beispiel an, dass die folgende hypothetische Syntax funktioniert:

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

127.0.0.1 localhost
::1 localhost

Auf diese Weise könnte ich einfach den Inhalt einer oder beider dieser beiden zusätzlichen Dateien löschen und den Rest so lassen, wie er ist.

Oder gibt es, abgesehen davon, eine bessere Möglichkeit, dies zu tun, als einfach ein kleines Skript zu erstellen, das solche Dateien zu einer neuen Hosts-Datei zusammenfügt, und als Teil meiner Automatisierungseinrichtung zuerst einige dieser zusätzlichen Dateien lösche und dann das Skript aufrufe, um die einzelne Hosts-Datei aus diesen zusätzlichen Dateien neu zu erstellen?

Antwort1

Mir ist keine Include-Möglichkeit bekannt. Ich würde jedoch Abschnitte in meiner Hosts-Datei erstellen und dann ein Skript verwenden, um die Zeilen in jedem Abschnitt zu kommentieren, z. B. mit sed.

So würde Ihre Datei aussehen

#%%%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

Bearbeiten:Hinzufügen eines schnellen Versuchs zum Ändern der Felder.

Entfernen des Kommentars für HOME.HOSTS

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

Die Kommentare für HOME.HOSTS wiederherstellen

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

Dies ist eine Basisversion und muss an Ihre Bedürfnisse angepasst werden.

Antwort2

Da dscl aufgrund der Umstellung auf OpenDirectoryService nicht mehr funktioniert, besteht eine Möglichkeit darin, ghost zu verwenden:

sudo gem install ghost

sudo ghost add fw.test.se 10.0.0.1

... fügt diesen Abschnitt in /etc/hosts hinzu:

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

Um den Abschnitt #ghost der Hosts-Datei zu löschen, verwenden Sie Folgendes (so lässt sich die Hostliste ganz einfach durch eine neue ersetzen):

sudo ghost empty

Weitere Informationen zu Ghost findet ihr hier: https://github.com/bjeanes/ghost

Antwort3

Ich hatte einen ähnlichen Anwendungsfall, als ich auf Dienste an drei verschiedenen Orten zugreifen musste und dabei unterschiedliche LAN-/WAN-Einstellungen in der Hosts-Datei verwendete. Karolos‘ Antwort oben ist eine mögliche Lösung. Mein Ansatz ist hier.

1- vgl.http://apple.stackexchange.com/q/139267/74657

2- Hosts-Dateien für jeden Standort erstellt (hosts.work, hosts.home, hosts.vendor)

3- Verwenden Sie hier das Skript von Soloz (https://github.com/slozo/Network-listener) immer wenn ich mich mit dem Heimnetzwerk verbinde, führe ich ein einfaches Skript aus, um die Hosts-Datei zu wechseln.

einfachste Methode wäre

mv hosts.home /etc/hosts

Alternativ können Sie die obige Antwort von Karolos automatisieren, indem Sie sed verwenden, um die vorhandene Datei beim Verbinden mit einer bestimmten SSID zu aktualisieren. Dies können Sie mithilfe des oben erwähnten Skripts von Soloz leicht erkennen und ausführen.

hoffe, das hilft jedem, der über das Thema stolpert.

verwandte Informationen