Hostname
Source
how to change the hostname of your machine
Not-so intrusive script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 | #!/bin/bash
#
usage() {
echo "usage : $0 <new hostname>"
exit 1
}
[ "$1" ] || usage
old=$(hostname)
new=$1
for file in \
/etc/exim4/update-exim4.conf.conf \
/etc/printcap \
/etc/hostname \
/etc/hosts \
/etc/ssh/ssh_host_rsa_key.pub \
/etc/ssh/ssh_host_dsa_key.pub \
/etc/motd \
/etc/ssmtp/ssmtp.conf
do
[ -f $file ] && sed -i.old -e "s:$old:$new:g" $file
done
|
Not-so intrusive script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75 | #!/bin/bash
#
# Fetching new and old hostname
OLD_HOSTNAME=$(hostname)
NEW_HOSTNAME=$1
WHIPTAIL_TITLE="Changing hostname"
WHIPTAIL_BACKTITLE="ShrimpDev <dev@csoellinger.at>"
WHIPTAIL_TEXT="Below you will find a checklist with all files where we found your old hostname \"${OLD_HOSTNAME}\" inside /etc\n\nPlease check which files we should update to your new hostname \"${NEW_HOSTNAME}\""
not_root() {
echo "ERROR: You have to be root to execute this script"
exit 1
}
usage() {
echo "usage : $0 <new hostname> [Optional:--backup/Set backup mode on] [Optional:--debug/Set debug mode on]"
exit 1
}
# Check if user is root
[ $EUID != 0 ] && not_root
# Check if we have at least one parameter
[ "$1" ] || usage
[ "$1" == "--backup" ] && usage
[ "$1" == "--debug" ] && usage
DEBUG="NO"
BACKUP="NO"
if [ "$2" == "--debug" ] || [ "$3" == "--debug" ]; then
DEBUG="YES"
fi
if [ "$2" == "--backup" ] || [ "$3" == "--backup" ]; then
BACKUP="YES"
fi
[ "$DEBUG" == "YES" ] && echo "DEBUG (NO FILES WILL BE CHANGED)"
[ "$BACKUP" == "YES" ] && echo "BACKUP MODE ON"
# Grep all possible targets
TARGETS=($(grep "$OLD_HOSTNAME" /etc/ -rl))
let TARGETSLENGTH=${#TARGETS[@]}
CHECKLIST=()
for ((i=0; i<${#TARGETS[@]}; i++)); do
CHECKLIST+=("${TARGETS[$i]}" "" "ON")
done
CHECKLIST_RESULT=$(whiptail --clear --fb --title "$WHIPTAIL_TITLE" --backtitle "$WHIPTAIL_BACKTITLE" --checklist "$WHIPTAIL_TEXT" 30 80 $TARGETSLENGTH "${CHECKLIST[@]}" 3>&2 2>&1 1>&3)
CHECKLIST_RESULT=${CHECKLIST_RESULT//\"/}
CHECKLIST_RESULT_ARR=(`echo $CHECKLIST_RESULT | tr ' ' '\n'`)
clear
for CHECKLIST_ITEM in "${CHECKLIST_RESULT_ARR[@]}"; do
echo "sed \"s:${OLD_HOSTNAME}:${NEW_HOSTNAME}:g\" \"${CHECKLIST_ITEM}\" > \"${CHECKLIST_ITEM}.tmp\""
[ "$DEBUG" == "NO" ] && sed "s:$OLD_HOSTNAME:$NEW_HOSTNAME:g" "$CHECKLIST_ITEM" > "$CHECKLIST_ITEM.tmp"
if [ "$BACKUP" == "YES" ]; then
echo "cp \"${CHECKLIST_ITEM}\" \"${CHECKLIST_ITEM}.BCK\""
[ "$DEBUG" == "NO" ] && cp "$CHECKLIST_ITEM" "$CHECKLIST_ITEM.BCK"
fi
echo "mv -f \"${CHECKLIST_ITEM}.tmp\" \"${CHECKLIST_ITEM}\""
[ "$DEBUG" == "NO" ] && mv -f "$CHECKLIST_ITEM.tmp" "$CHECKLIST_ITEM"
echo ""
done
exit 0
|
Last update:
Jun 03, 2025