39 lines
1.3 KiB
Bash
Executable file
39 lines
1.3 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
# Usage:
|
|
# configLine [searchPattern] [replaceLine] [filePath]
|
|
# Ref https://stackoverflow.com/a/54909102/1460422
|
|
config_line() {
|
|
local OLD_LINE_PATTERN=$1; shift
|
|
local NEW_LINE=$1; shift
|
|
local FILE=$1
|
|
local NEW=$(echo "${NEW_LINE}" | sed 's/\//\\\//g')
|
|
touch "${FILE}"
|
|
sed -i '/'"${OLD_LINE_PATTERN}"'/{s/.*/'"${NEW}"'/;h};${x;/./{x;q100};x}' "${FILE}"
|
|
if [[ $? -ne 100 ]] && [[ ${NEW_LINE} != '' ]]
|
|
then
|
|
echo "${NEW_LINE}" >> "${FILE}"
|
|
fi
|
|
}
|
|
|
|
log_msg() {
|
|
echo -e "[ ${HOSTNAME} ] [ $(date -u +"%Y-%m-%dT%H:%M:%SZ") ] $@" >&2;
|
|
}
|
|
|
|
# Old approach - we've learned we can override /etc/network/interfaces via /etc/dhcp/dhclient.conf
|
|
# config_line "dns-nameservers" "dns-nameservers 172.16.230.100" "/etc/network/interfaces";
|
|
|
|
completed_file="/etc/dhcp/sbrl-dns-configured";
|
|
|
|
log_msg "Configuring DNS nameserver";
|
|
if [[ ! -f "${completed_file}" ]]; then
|
|
log_msg "DNS nameserver not yet configured, appending to /etc/dhcp/dhclient.conf";
|
|
echo "interface \"eth0\" {
|
|
supersede domain-name-servers 172.16.230.100;
|
|
}" | sudo tee -a /etc/dhcp/dhclient.conf;
|
|
sudo touch "${completed_file}";
|
|
|
|
log_msg "Complete, this machine needs a reboot to activate the new config directives";
|
|
else
|
|
log_msg "DNS nameserver config written already, no changes made";
|
|
fi
|