Compare commits

..

2 Commits

Author SHA1 Message Date
Aaron Johnon 474fd0ec65 updated file permissions
4 years ago
Aaron Johnon 946a8bcb37 Added user-rename script first draft
4 years ago

@ -1,11 +1,11 @@
#!/usr/bin/env bash
#!/usr/bin/env sh
#Author: Aaron Johnson
#Comment: This script is not intended to be portable or fail-safe, and is used in my personal provisioning process.
name_old=$(cat /etc/hostname)
#Below command preserved in case it is needed to add older OS support
#ipadd_old=$(ifconfig | awk '/inet6/{next;} /127.0.0.1/{next;} /inet/{print $2;}' | grep 172.23)
cidr_old=$(ip a | awk '/inet6/{next;} /127.0.0.1/{next;} /inet/{print $2;}' | grep -E '172.2[31]')
cidr_old=$(ip a | awk '/inet6/{next;} /127.0.0.1/{next;} /inet/{print $2;}' | grep 172.23)
ipadd_old=$(echo $cidr_old | awk -F '/' '{print $1}')
ipc_present=false
@ -23,21 +23,21 @@ 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$" 2>&1 >/dev/null; then
if ! echo $cidr | grep -E "^$n(\.$n){3}/$m$" &>/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 2>&1 >/dev/null && ipc_present=true
which ipcalc &>/dev/null && ipc_present=true
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
@ -67,21 +67,15 @@ 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 2>&1 >/dev/null); then
printf "OpenSuSE... "
nmcli con mod ens18 ipv4.addresses $cidr && printf "DONE\n" || exit 1
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 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' 2>&1 >/dev/null); then
if $(uname -r | grep -E 'el8' &>/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... "
sed -i "s_${cidr_old}_${cidr}_g" /etc/netplan/00-installer-config.yaml && printf "DONE\n" || exit 1
elif $(uname -r | grep 'arch' &>/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
printf "Arch Linux (alternative kernel)... "
sed -i "s_${cidr_old}_${cidr}_g" /etc/netctl/ens18 && printf "DONE\n" || exit 1
else
printf "FAIL\n\nOS distribution not supported! Update IP address manually before rebooting!\n\n"
fi

@ -0,0 +1,51 @@
#!/bin/sh
# Arguments: old name, new name
if [ $# -lt 3 ]; then
printf '%s\n' "Wrong number of arguments\!" >&2
printf '%s\n' "Usage: user-rename [old name] [new name] [new home]" >&2
exit 1
fi
OLD=$1
NEW=$2
HOME=$3
# Get old home dir (no longer used, keeping around for a bit in case it is needed)
#OLD_HOME=$(grep $OLD /etc/passwd | awk -F: '{print $6}')
# Begin sanity check
if ! id "$OLD" 2>&1 >/dev/null; then
printf '%s\n' "ERROR 11: OLD user name not found: $OLD" >&2
exit 11
fi
if id "$NEW" 2>&1 >/dev/null; then
printf '%s\n' "ERROR 12: NEW user name already exists: $NEW" >&2
exit 12
fi
if [ -d "$HOME" ]; then
printf '%s\n' "ERROR 13: New HOME directory already exists: $HOME" >&2
exit 13
fi
# End sanity check
# Rename user
usermod -l $NEW $OLD || { printf '%s\n' "Error renaming user\!" >&2 && exit 1 }
# Change home dir location
usermod -d $HOME -m $NEW || { printf '%s\n' "Error moving home directory\!" >&2 && exit 1 }
# Check if primary group matches old user name; modify if so
if [ ! "$(id -gn $NEW)" == "$OLD" ]; then
groupmod -n $NEW $OLD || { printf '%s\n' "Error renaming primary group\!" >&2 && exit 1 }
fi
# Done! Print some info and exit
grep $NEW /etc/passwd
id $NEW
exit 0
Loading…
Cancel
Save