I am working on some automation scripts to configure my network settings, hosts file contents, and /etc/resolver files, when accessing different networks I frequent between.
There are some combinations that can occur that all require changes to the hosts file, and I'd like to avoid having to set up a matrix of different combinations, duplicating the shared settings all over the place.
For instance, I may be on the work network, ie. in the building, or I may access it over VPN. In both cases, I need to add some settings to the hosts file for networking to work properly, some are shared, some are not. Additionally, if I'm over VPN, I may be at home, in which case there are some other settings in the hosts file I also want to add.
As such, I was hoping that instead of creating one file for "home, accessing work over VPN" vs. "home, not accessing work", etc., is there a way for me to include other files?
For instance, let's say the following hypothetical syntax works:
#!include home.hosts
#!include work.hosts
127.0.0.1 localhost
::1 localhost
This way, I could simply clear out the contents of one, or both, of those two extra files, and leave the rest be.
Or, barring that, is there a better way to do this than to just build a small script that concatenates files such as those into a new hosts file, and as part of my automation setup, I first clear out some of those extra files, and then I invoke the script to rebuild the single hosts file from those extra files?
dscl
directly?dscl
command, I will have to research on that as well.dscl
, for which/etc/hosts
is simply one of the available data sources, providing (of course) hostname/IP address mappings. Setting up a script that writes todscl
and flushes the cache might work better in your situation than keeping multiple copies of the hosts file, or rewriting it all the time.