Wie kann ich die /etc/hosts
Datei auf eine andere Konfigurationsdatei verweisen lassen, um eine Liste der Hosts zu erhalten?
Beispiel /etc/hosts
:
## My Hosts
127.0.0.1 localhost
255.255.255.255 broadcasthost
#Other Configurations
<Link to /myPath/to/MyConfig/ConfigFile.txt>
#Other Addresses
3.3.3.3 MyAwesomeDomain.com
4.4.4.4 SomeplaceIWantToGoTo.com
ConfigFile.txt
##My additional Hosts
1.1.1.1 SomeLocation.com
2.2.2.2 AnotherLocation.com
Wie füge ich einen Link / eine Referenz zu einer /etc/hosts
Datei hinzu, sodass ConfigFile.txt geladen wird?
LC_COLLATE
), sodass die Einschränkung in Ihrer Antwort nicht gilt.Dies ist nicht möglich, da das Format normalerweise tief in der libc der Plattform kodiert ist. Es ist jedoch vorstellbar, dass ein Betriebssystem diese Funktion hinzufügt, was es zu einer plattformübergreifenden Lösung macht.
Alternativ können Sie einen bestimmten Block in Ihrer Hosts-Datei automatisch aktualisieren. Dies ist besonders hilfreich, wenn Sie über ein Skript verfügen, das Hosteinträge für ein bestimmtes Projekt dynamisch ausgibt (möglicherweise mit wechselnden IP-Adressen).
Hier ist ein Beispiel: Sie möchten Hosts aus dem Terraform-Status über erstellen
terraform-inventory
.Relevante Inventarausgabe (z. B. Zuordnung eines EC2-Tags "Name" zu Gruppen mit jeweils genau einem Host):
print-updated-hosts-entries.sh
Skriptausgabe:
Und die Befehlszeile, um einen markierten Block
/etc/hosts
mit der Skriptausgabe zu aktualisieren :Erläuterung:
sed
Aufrufe, um alle Zeilen vor und nach dem Beginn bzw. Ende der Markierung zu drucken. In jedem Fall fügen wir die Markierungen ein und setzen die Skriptausgabe zwischen diese Zeilen. Auch wenn das Skript fehlschlägt, müssen wir immer noch den Inhalt/etc/hosts
(und die Sicherung in einem katastrophalen Szenario) umgeben.sudo tee /etc/hosts.new
Schreibt den weitergeleiteten Inhalt in eine neue Dateised -n '/^# MYMARKER BEGIN/,/^# MYMARKER END/p'
druckt den aktualisierten Block aussudo mv /etc/hosts.new /etc/hosts
verschiebt die neue Datei an ihren Platz. Dies muss in einem separaten Schritt erfolgen, da der Pipe-Puffer, wenn nicht genügend Speicherplatztee /etc/hosts
vorhanden ist, die Datei schreiben würde, während der vorhandene Inhalt noch gelesen wird.quelle
Ich hatte eine ähnliche Anforderung an mich, von verschiedenen Standorten aus nahtlos mit dynamischen IPs zu arbeiten, zumal ich virtuelle Maschinen verwende. Meine einfache Lösung dafür lautet wie folgt:
Erstellen Sie ein Skript zum Aktualisieren der Hosteinträge für jede Entität. Wenn ich beispielsweise einen Host mit dem Namen "myhost.net" und den Unterdomänen "app.myhost.net" habe, würde ich dieses Skript aufrufen und eine IP-Adresse angeben, die für jede Domäne geschrieben und in einer Hostdatei mit dem Namen gespeichert wird 'mein Gastgeber'. Das gleiche Skript verfügt über eine Markierung zum Löschen oder Aktualisieren einer einzelnen Hostdatei.
Erstellen Sie ein anderes Skript, um diese Dateien in / etc / hosts zusammenzuführen. Dieses Skript findet alle von Ihnen erstellten Host-Dateien und führt sie in der Datei single hosts unter / etc / hosts zusammen.
Das hat bei mir perfekt geklappt. Ich arbeite aus der Ferne und muss manchmal aus irgendeinem Grund zwischen den Standorten wechseln. Außerdem muss ich diese eine Datei so oft bearbeiten. Stattdessen führe ich nur EIN Skript aus. Ja, ein Drehbuch. Das erste Skript führt automatisch das andere aus, um das Zusammenführen automatisch durchzuführen.
quelle