Trace: set_static_ip.sh

set_static_ip.sh

#!/bin/bash
# set vars
_TMP_FILE=/tmp/00-installer-config.yaml
_DEST_FILE=/etc/netplan/00-installer-config.yaml
_GATEWAY=`ip route show | head -1 | awk '{print $3}'`
# echo gateway = $_GATEWAY & exit
_DNS1=1.0.0.1
_DNS2=1.0.0.2
_DNS3=8.8.8.8
# show current config
sudo echo 
clear
echo 
echo 
echo Look at the configuration below...
echo 
echo 
cat /etc/netplan/00-installer-config.yaml
echo 
echo 
# get interface name from user input
echo Directly below \"ethernets:\" is the interface name.
echo Enter the interface name \(omit the trailing colon\) :
read _INTERFACE_NAME
echo 
# get (new/static) IP from user input
echo Enter the new static IP address:
read _STATIC_IP
echo 
echo 
echo Enter the first DNS server. Press Enter to use the default - \'$_DNS1\'
read _DNS1
if [ -z "$_DNS1" ]; # if DNS1 var is empty
then
  # echo "\$_DNS1 is empty"
  _DNS1="1.0.0.1"
fi
echo 
echo Enter the second DNS server. Press Enter to use the default - \'$_DNS2\'
read _DNS2
if [ -z "$_DNS2" ]; # if DNS2 var is empty
then
  # echo "\$_DNS2 is empty"
  _DNS2="1.0.0.2"
fi
echo 
echo Enter the third DNS server. Press Enter to use the default - \'$_DNS3\'
read _DNS3
if [ -z "$_DNS3" ]; # if DNS3 var is empty
then
  # echo "\$_DNS3 is empty"
  _DNS3="8.8.8.8"
fi
echo 
#
# Debug...
# uncomment 4 lines below for debug
# echo interface name is $_INTERFACE_NAME
# echo new IP address is $_STATIC_IP
# echo default gateway is $_GATEWAY
# echo DNS servers are $_DNS_SERVERS
_DNS_SERVERS="$_DNS1, $_DNS2, $_DNS3"
echo DNS Servers set to = \'$_DNS_SERVERS\'
#
#########    WRITE THE FILE    ########
#
printf "network:\n" > $_TMP_FILE
printf "  ethernets:\n" >> $_TMP_FILE
printf "    $_INTERFACE_NAME:\n" >> $_TMP_FILE
printf "      dhcp4: false\n" >> $_TMP_FILE
printf "      addresses:\n" >> $_TMP_FILE
printf "        - $_STATIC_IP/24\n" >> $_TMP_FILE
printf "      nameservers:\n" >> $_TMP_FILE
printf "        addresses: [$_DNS_SERVERS]\n" >> $_TMP_FILE
printf "      routes:\n" >> $_TMP_FILE
printf "        - to: default\n" >> $_TMP_FILE
printf "          via: $_GATEWAY\n" >> $_TMP_FILE
printf "  version: 2" >> $_TMP_FILE
echo 
clear 
echo 
echo 
echo Review the new configuration:
echo 
echo 
cat $_TMP_FILE
echo 
echo 
echo If you choose to apply these settings, you may have to close
echo this terminal window, open a new one, and reconnect using:
echo 
printf "    ssh [username]@$_STATIC_IP\n"
echo 
echo Press Enter to apply these settings or Ctrl+C to quit and start over.
read _CONFIRM
if [ -z "$_CONFIRM" ]; # if CONFIRM var is empty
then
  # user didn't break out - write new config file
  echo 
fi
sudo cp $_DEST_FILE $_DEST_FILE.bak
sudo cp $_TMP_FILE $_DEST_FILE
sudo netplan apply
exit