Created
November 1, 2012 11:19
-
-
Save dweeber/3993105 to your computer and use it in GitHub Desktop.
Replacement /etc/init.d/hostname.sh to provide for auto changing hosts hostname
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /bin/sh | |
### BEGIN INIT INFO | |
# Provides: hostname | |
# Required-Start: | |
# Required-Stop: | |
# Should-Start: glibc | |
# Default-Start: S | |
# Default-Stop: | |
# Short-Description: Set hostname based on /etc/hostname | |
# Description: Read the machines hostname from /etc/hostname, and | |
# update the kernel value with this value. If | |
# /etc/hostname is empty, the current kernel value | |
# for hostname is used. If the kernel value is | |
# empty, the value 'localhost' is used. | |
# | |
# MODIFIED TO USE /boot/newhost file to change | |
# the /etc/hosts and /etc/hostname on start | |
### END INIT INFO | |
PATH=/sbin:/bin | |
. /lib/init/vars.sh | |
. /lib/lsb/init-functions | |
do_start () { | |
if [ -f /boot/newhost ] | |
then | |
OLDHOST=`cat /etc/hostname` | |
NEWHOST=`cat /boot/newhost` | |
echo "Changing $OLDHOST to $NEWHOST..." | |
echo $NEWHOST > /etc/hostname | |
sed -i "s/127.0.1.1.*$OLDHOST/127.0.1.1\t$NEWHOST/g" /etc/hosts | |
rm /boot/newhost | |
fi | |
[ -f /etc/hostname ] && HOSTNAME="$(cat /etc/hostname)" | |
# Keep current name if /etc/hostname is missing. | |
[ -z "$HOSTNAME" ] && HOSTNAME="$(hostname)" | |
# And set it to 'localhost' if no setting was found | |
[ -z "$HOSTNAME" ] && HOSTNAME=localhost | |
[ "$VERBOSE" != no ] && log_action_begin_msg "Setting hostname to '$HOSTNAME'" | |
hostname "$HOSTNAME" | |
ES=$? | |
[ "$VERBOSE" != no ] && log_action_end_msg $ES | |
exit $ES | |
} | |
do_status () { | |
HOSTNAME=$(hostname) | |
if [ "$HOSTNAME" ] ; then | |
return 0 | |
else | |
return 4 | |
fi | |
} | |
case "$1" in | |
start|"") | |
do_start | |
;; | |
restart|reload|force-reload) | |
echo "Error: argument '$1' not supported" >&2 | |
exit 3 | |
;; | |
stop) | |
# No-op | |
;; | |
status) | |
do_status | |
exit $? | |
;; | |
*) | |
echo "Usage: hostname.sh [start|stop]" >&2 | |
exit 3 | |
;; | |
esac | |
: |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This is a modified version of /etc/init.d/hostname.sh script on the Raspberry Pi that looks for a /boot/newhost file. If found, it takes the name found in that file and replaces the current contents of the /etc/hostname and the entries in the /etc/hosts file to match. It then removes the /boot/newhost to prevent it doing it more than once.