Skip to content

Instantly share code, notes, and snippets.

@w3servicesdotnet
Forked from alrik11es/manage-etc-hosts.sh
Created April 27, 2021 12:29
Show Gist options
  • Save w3servicesdotnet/b07f4bb8f2d9416803412357d4e9eae9 to your computer and use it in GitHub Desktop.
Save w3servicesdotnet/b07f4bb8f2d9416803412357d4e9eae9 to your computer and use it in GitHub Desktop.
Bash Script to Manage /etc/hosts file for adding/removing hostnames.
#!/usr/bin/env bash
set -eu
if [ "$EUID" -ne 0 ]
then echo "Please run as root"
exit
fi
# PATH TO YOUR HOSTS FILE
: ${ETC_HOSTS="/etc/hosts"}
# DEFAULT IP FOR HOSTNAME
DEFAULT_IP="127.0.0.1"
VERBOSE=false
function remove() {
local HOSTNAME=$1
local HOST_REGEX="\(\s\+\)${HOSTNAME}\s*$"
local HOST_LINE="$(grep -e "${HOST_REGEX}" ${ETC_HOSTS})"
if [ -n "${HOST_LINE}" ]; then
[ ${VERBOSE} == true ] && echo "${HOSTNAME} Found in your ${ETC_HOSTS}, Removing now..."
sed -i -e "s/${HOST_REGEX}/\1/g" -e "/^[^#][0-9\.]\+\s\+$/d" ${ETC_HOSTS}
else
[ ${VERBOSE} == true ] && echo "${HOSTNAME} was not found in your ${ETC_HOSTS}";
fi
}
function add() {
local HOSTNAME=$1
local IP=${2:-${DEFAULT_IP}}
local HOST_REGEX="\(\s\+\)${HOSTNAME}\s*$"
local HOST_LINE="$(grep -e "${HOST_REGEX}" ${ETC_HOSTS})"
if [ -n "${HOST_LINE}" ]; then
[ ${VERBOSE} == true ] && echo "${HOSTNAME} already exists : ${HOST_LINE}"
else
[ ${VERBOSE} == true ] && echo "Adding ${HOSTNAME} to your ${ETC_HOSTS}";
echo -e "${IP}\t${HOSTNAME}" >> ${ETC_HOSTS}
[ ${VERBOSE} == true ] && echo -e "${HOSTNAME} was added succesfully \n ${HOST_LINE}";
nscd -i hosts
fi
}
# Execute
$@
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment