Comment puis-je obtenir que le /etc/hosts
fichier fasse référence à un autre fichier de configuration pour sa liste d'hôtes?
Exemple /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
Comment puis-je ajouter un lien / une référence dans un /etc/hosts
fichier tel que ConfigFile.txt soit chargé?
LC_COLLATE
), de sorte que la mise en garde dans votre réponse ne s'applique pas.Ce n'est pas possible, car le format est généralement profondément codé dans la libc des plateformes. Cependant, il est imaginable qu'un système d'exploitation ajoute cette fonctionnalité, ce qui en fait une solution non multiplateforme.
Vous pouvez également mettre à jour automatiquement un certain bloc dans votre fichier hosts. Ceci est particulièrement utile si vous avez un script qui génère dynamiquement des entrées d’hôte pour un projet donné (ou peut-être avec des adresses IP changeantes).
Voici un exemple: vous voulez créer des hôtes à partir de l’état Terraform via
terraform-inventory
.Résultats d'inventaire pertinents (par exemple, mappage d'une balise "Nom" EC2 sur des groupes comprenant exactement un hôte chacun):
print-updated-hosts-entries.sh
Sortie du script:
Et la ligne de commande pour mettre à jour un bloc marqué
/etc/hosts
avec la sortie du script :Explication:
sed
appels pour imprimer toutes les lignes avant et après le début / la fin du marqueur, respectivement. Nous insérons les marqueurs dans tous les cas, en plaçant la sortie du script entre ces lignes. Même si le script échoue, nous devons toujours entourer le contenu de/etc/hosts
(et la sauvegarde dans un scénario catastrophique).sudo tee /etc/hosts.new
écrit le contenu diffusé dans un nouveau fichiersed -n '/^# MYMARKER BEGIN/,/^# MYMARKER END/p'
imprime le bloc mis à jour pour plus de commoditésudo mv /etc/hosts.new /etc/hosts
déplace le nouveau fichier en place. Cela doit être effectué dans une étape distincte, car si le tampon de canal manque d'espace,tee /etc/hosts
l'écriture du fichier commence alors que le contenu existant est encore en cours de lecture.la source
J'ai eu le même besoin de travailler de manière transparente depuis différents emplacements avec des adresses IP dynamiques, en particulier depuis que j'utilise des machines virtuelles. Ma solution simple à ceci est la suivante:
Créez un script pour mettre à jour les entrées d'hôte pour chaque entité. Par exemple, si j'ai un hôte appelé "myhost.net", avec "app.myhost.net" des sous-domaines, j'appellerai ce script et fournirai une adresse IP qui sera écrite pour chaque domaine et enregistrée dans un fichier hôte appelé 'mon hôte' Le même script a un drapeau pour supprimer ou mettre à jour un seul fichier hôte.
Créez un autre script pour fusionner ces fichiers dans / etc / hosts. Ce script trouvera tous les fichiers hôtes que vous avez créés et les fusionnera en un seul fichier hôte dans / etc / hosts.
Cela a fonctionné pour moi parfaitement. Je travaille à distance et ai parfois besoin de changer de lieu pour une raison ou une autre et je serais surchargé par la demande de modifier ce fichier autant de fois. Au lieu de cela, je viens d'exécuter UN script. Oui, un script. Le premier script exécute automatiquement l'autre pour effectuer la fusion automatiquement.
la source