Skip to content

Instantly share code, notes, and snippets.

@dweeber
Created November 1, 2012 11:19
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
Star You must be signed in to star a gist
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
#! /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
:
@dweeber
Copy link
Author

dweeber commented Nov 1, 2012

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment