From b1fc0fc34020f85c632dcc9254c8aad8af963306 Mon Sep 17 00:00:00 2001 From: Aaron Johnon Date: Sun, 13 Nov 2022 23:43:33 -0600 Subject: [PATCH 1/4] Removed &> BASHism, set script to use BASH --- provision_new_server.sh | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/provision_new_server.sh b/provision_new_server.sh index 46cf9d4..94dfe5e 100755 --- a/provision_new_server.sh +++ b/provision_new_server.sh @@ -23,14 +23,14 @@ fi ## Validate CIDR n='([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' m='([0-9]|[12][0-9]|3[012])' -if ! echo $cidr | grep -E "^$n(\.$n){3}/$m$" &>/dev/null; then +if ! echo $cidr | grep -E "^$n(\.$n){3}/$m$" 2>&1 >/dev/null; then printf "\nCIDR input is not valid!\n" exit 12 fi # End input sanity check # Test if 'ipcalc' utility is available -which ipcalc &>/dev/null && ipc_present=true +which ipcalc 2>&1 >/dev/null && ipc_present=true ipadd=$(echo $cidr | awk -F '/' '{print $1}') echo @@ -67,18 +67,21 @@ sed -i "s/${name_old}/${name}/g" /etc/zabbix/zabbix_agentd.conf && printf "DONE\ # Update IP address printf "Update IP address... " -if $(grep 'SUSE' /etc/os-release &>/dev/null); then +if $(grep 'SUSE' /etc/os-release 2>&1 >/dev/null); then printf "OpenSuSE... " nmcli con mod ens18 ipv4.addresses $cidr && printf "DONE\n" || exit 1 -elif $(uname -r | grep 'arch' &>/dev/null); then +elif $(uname -r | grep 'arch' 2>&1 >/dev/null); then printf "Arch Linux... " sed -i "s_${cidr_old}_${cidr}_g" /etc/netctl/ens18 && printf "DONE\n" || exit 1 -elif $(grep -i 'arch' /etc/os-release &>/dev/null); then +elif $(grep -i 'arch' /etc/os-release 2>&1 >/dev/null); then printf "Arch Linux (alternative kernel)... " sed -i "s_${cidr_old}_${cidr}_g" /etc/netctl/ens18 && printf "DONE\n" || exit 1 -elif $(uname -r | grep -E 'el8' &>/dev/null); then +elif $(uname -r | grep -E 'el8' 2>&1 >/dev/null); then printf "CentOS 8... " nmcli con mod ens18 ipv4.addresses $cidr && printf "DONE\n" || exit 1 +elif $(grep 'ubuntu' /etc/os-release 2>&1 >/dev/null); then + printf "Ubuntu... " + awk "{sub(_${cidr_old}_,${cidr})}" /etc/netplan/00-installer-config.yaml && printf "DONE\n" || exit 1 else printf "FAIL\n\nOS distribution not supported! Update IP address manually before rebooting!\n\n" fi From 5d6eaff1da834da8948ba606f81559128324df5c Mon Sep 17 00:00:00 2001 From: Aaron Johnon Date: Mon, 14 Nov 2022 00:13:46 -0600 Subject: [PATCH 2/4] Fixed regex to function equally in newer versions of ipcalc --- provision_new_server.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/provision_new_server.sh b/provision_new_server.sh index 94dfe5e..90bde5a 100755 --- a/provision_new_server.sh +++ b/provision_new_server.sh @@ -36,8 +36,8 @@ ipadd=$(echo $cidr | awk -F '/' '{print $1}') echo printf "Review these changes carefully!\n\n" if [ "$ipc_present" = true ]; then - snm=$(ipcalc $cidr | grep Netmask | grep -Eo "($n.){3}$n") - snm_old=$(ipcalc $cidr_old | grep Netmask | grep -Eo "($n.){3}$n") + snm=$(ipcalc $cidr | grep Netmask | grep -Eo "($n\.){3}$n") + snm_old=$(ipcalc $cidr_old | grep Netmask | grep -Eo "($n\.){3}$n") printf "+,CURRENT,PENDING\nHostname:,$name_old,$name\nAddress:,$ipadd_old,$ipadd\nCIDR:,$cidr_old,$cidr\nNetmask:,$snm_old,$snm" | column -s, -t else printf "+,CURRENT,PENDING\nHostname:,$name_old,$name\nAddress:,$ipadd_old,$ipadd\nCIDR:,$cidr_old,$cidr" | column -s, -t From 20521307453bb6f812a52f544c04368755f44361 Mon Sep 17 00:00:00 2001 From: Aaron Johnon Date: Mon, 14 Nov 2022 00:15:28 -0600 Subject: [PATCH 3/4] Set script to run in BASH environment --- provision_new_server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/provision_new_server.sh b/provision_new_server.sh index 90bde5a..75fbb46 100755 --- a/provision_new_server.sh +++ b/provision_new_server.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env sh +#!/usr/bin/env bash #Author: Aaron Johnson #Comment: This script is not intended to be portable or fail-safe, and is used in my personal provisioning process. From 65168fda38c6f87beb341b978d368897a59b682a Mon Sep 17 00:00:00 2001 From: Aaron Johnon Date: Mon, 14 Nov 2022 00:24:06 -0600 Subject: [PATCH 4/4] Swapped Ubuntu's awk for sed like the others --- provision_new_server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/provision_new_server.sh b/provision_new_server.sh index 75fbb46..ad32f60 100755 --- a/provision_new_server.sh +++ b/provision_new_server.sh @@ -81,7 +81,7 @@ elif $(uname -r | grep -E 'el8' 2>&1 >/dev/null); then nmcli con mod ens18 ipv4.addresses $cidr && printf "DONE\n" || exit 1 elif $(grep 'ubuntu' /etc/os-release 2>&1 >/dev/null); then printf "Ubuntu... " - awk "{sub(_${cidr_old}_,${cidr})}" /etc/netplan/00-installer-config.yaml && printf "DONE\n" || exit 1 + sed -i "s_${cidr_old}_${cidr}_g" /etc/netplan/00-installer-config.yaml && printf "DONE\n" || exit 1 else printf "FAIL\n\nOS distribution not supported! Update IP address manually before rebooting!\n\n" fi