Hostnamer
Hostnamer is a small bash script which can be used to quickly modify your HOSTNAME.
Dependencies: zenity,words
#!/bin/bash
#This "Hostnamer" script helps you set a randomly generated or fixed hostname on Arch-based systems with a little GUI.
#
#This is free and unencumbered software released into the public domain.
#
#Anyone is free to copy, modify, publish, use, compile, sell, or
#distribute this software, either in source code form or as a compiled
#binary, for any purpose, commercial or non-commercial, and by any
#means.
#
#In jurisdictions that recognize copyright laws, the author or authors
#of this software dedicate any and all copyright interest in the
#software to the public domain. We make this dedication for the benefit
#of the public at large and to the detriment of our heirs and
#successors. We intend this dedication to be an overt act of
#relinquishment in perpetuity of all present and future rights to this
#software under copyright law.
#
#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
#EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
#MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
#IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
#OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
#ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
#OTHER DEALINGS IN THE SOFTWARE.
#
#For more information, please refer to <http://unlicense.org/>
#
if [ "$(id -u)" != "0" ]; then
zenity --error --text "Error: Script must be run as root (try sudo?)" 1>&2
exit 1
fi ##checks if we are root, if not prompt the user and quit.
if [ -f /usr/share/dict/words ]
then
##tests if we have a dictionary, if not fails at bottom of this script
zenity --question --text "Welcome to Hostnamer! \n This little script helps you reset your hostname. \n Do you wish to proceed?"
rc=$?
if [ "${rc}" == "0" ]; then
## answer="yes"
zenity --question --text "Do you want to provide a hostname? \n(Otherwise we'll generate a cool random one for you)"
rc=$?
if [ "${rc}" == "0" ]; then
## answer="yes"
hostAnswer=$(zenity --entry --text "What hostname would you like?" --entry-text "localhost")
hostnamectl set-hostname $hostAnswer
sed -i '/127.0.0.1/c\127.0.0.1 localhost.localdomain localhost '$hostAnswer'' /etc/hosts
##properly sets our new host in /etc/hosts file
hostname $hostAnswer
##avoids need to reboot before showing our new hostname in terminals etc.
zenity --info --text "New hostname set to "$hostAnswer".\nRun me again at any time to change your hostname again."
else
## answer="no"
RNDHOST=`egrep -i "^[^áéíÓÚàèìÒÙäëüÖÜãõñÃÕÑâêîÔÛ']{8}$" /usr/share/dict/words | shuf | tail -n 1`
##get a list of random words without accented characters that are 8chars long, shuffle them, and give us one.
hostnamectl set-hostname $RNDHOST
sed -i '/127.0.0.1/c\127.0.0.1 localhost.localdomain localhost '$RNDHOST'' /etc/hosts
##properly sets our new host in /etc/hosts file
hostname $RNDHOST
##avoids need to reboot before showing our new hostname in terminals etc.
zenity --info --text "New hostname set to "$RNDHOST".\nRun me again at any time to change your hostname again."
fi
else
##answer="no"
zenity --error --text "Hostname not changed. Exiting!"
fi
else
zenity --error --text "Error: No dictionaries found in '/usr/share/dict/words' \n(try 'pacman -S words' and start me again)" 1>&2
exit 1
fi