You've already forked ansible-role-common
48 lines
1.5 KiB
Bash
48 lines
1.5 KiB
Bash
#!/bin/bash
|
|
|
|
# get subnet
|
|
subnet=$(ip a | grep "inet " | tail -1 | awk '{print $2}')
|
|
|
|
# get router/gateway
|
|
router=$(ip route show | head -1 | awk '{print $3}')
|
|
|
|
# get size of network portion of address in bytes
|
|
sz=$(echo $subnet | awk -F / '{print $2}')
|
|
bytes=$(("$sz" / 8))
|
|
prefix=$(echo "$subnet" | cut -d. -f1-$bytes) # e.g., 192.168.0
|
|
|
|
# get IP address to be set
|
|
IP=$(hostname -I | awk '{print $1}') # current IP
|
|
echo -n "Keep IP address?—$IP [yn]> "
|
|
read -r ans
|
|
if [ "$ans" == "n" ]; then
|
|
echo -n "Enter new IP address: "
|
|
read -r IP
|
|
# check if specified IP is properly formatted
|
|
if [[ ! $IP =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
|
|
echo Invalid IP
|
|
fi
|
|
# check if specified IP works for local network
|
|
if [[ ! $IP =~ ^$prefix ]]; then
|
|
echo "ERROR: Specified IP not usable for local network"
|
|
exit
|
|
fi
|
|
fi
|
|
|
|
# check if specified IP is properly formatted
|
|
if [[ ! $IP =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
|
|
echo Invalid IP
|
|
fi
|
|
|
|
# fetch the UUID
|
|
UUID=$(nmcli connection show | tail -1 | awk '{print $4}')
|
|
if [[ "$UUID" == "ethernet" ]]; then
|
|
# This is the other format of nmcli connection show
|
|
UUID=$(nmcli connection show | head -2 | tail -1 | awk '{print $3}')
|
|
fi
|
|
|
|
# run commands to set up the permanent IP address
|
|
nmcli connection modify "$UUID" IPv4.address "$IP"/"$sz"
|
|
nmcli connection modify "$UUID" IPv4.gateway "$router"
|
|
nmcli connection modify "$UUID" IPv4.method manual
|
|
nmcli connection up "$UUID" |