2 changed files with 91 additions and 2 deletions
@ -1,7 +1,6 @@ |
|||
{ |
|||
"recommendations": [ |
|||
"mads-hartmann.bash-ide-vscode", |
|||
"rogalmic.bash-debug", |
|||
"mkhl.shfmt", |
|||
"rogalmic.bash-debug" |
|||
], |
|||
} |
|||
@ -0,0 +1,90 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
# CONSTANTS |
|||
|
|||
BASEDIR=$(dirname "$0") |
|||
COMMAND=show |
|||
|
|||
# FUNCTIONS |
|||
function usage { |
|||
echo "usage: $(basename "$0") [--set NEW_FQDN]" |
|||
echo " either returns the fully qualified name when pass with no argument" |
|||
echo " or define the new fully qualified name when pass --set {NEW_FQDN}" |
|||
} |
|||
|
|||
function parse_options { |
|||
while [[ $# -gt 0 ]]; do |
|||
case "$1" in |
|||
'--set') |
|||
COMMAND=define |
|||
shift 1 |
|||
[[ -z ${1:-} || $1 =~ ^- ]] && usage && exit 1 |
|||
NEW_FQDN=$1 |
|||
;; |
|||
--help | -h) |
|||
usage && exit 0 |
|||
;; |
|||
*) |
|||
echo >&2 "Unknown option: $1" && usage && exit 2 |
|||
;; |
|||
esac |
|||
|
|||
shift 1 # Move to the next argument |
|||
done |
|||
} |
|||
|
|||
function show { |
|||
hostname -f |
|||
} |
|||
|
|||
function define { |
|||
if [[ $NEW_FQDN == *.* ]]; then |
|||
name=$(echo $NEW_FQDN | cut -d. -f1) |
|||
domain=${NEW_FQDN#${name}.} |
|||
if [[ -n $domain ]]; then |
|||
define_fqdn $name $domain |
|||
else |
|||
define_single $name |
|||
fi |
|||
else |
|||
define_single $NEW_FQDN |
|||
fi |
|||
} |
|||
|
|||
function define_single { |
|||
local single=$1 |
|||
local previous=$(hostname -f) |
|||
for i in $(grep $previous /etc/hosts | cut -f1); do |
|||
append_or_replace ^$i.* "$i\t$single" /etc/hosts >/dev/null |
|||
done |
|||
hostnamectl hostname $single |
|||
} |
|||
|
|||
function define_fqdn { |
|||
local name=$1 |
|||
local domain=$2 |
|||
local previous=$(hostname -f) |
|||
|
|||
for i in $(grep $previous /etc/hosts | cut -f1); do |
|||
append_or_replace ^$i.* "$i\t$name.$domain $name" /etc/hosts >/dev/null |
|||
done |
|||
hostnamectl hostname $name |
|||
} |
|||
|
|||
function perform_command { |
|||
case $COMMAND in |
|||
show) |
|||
show |
|||
;; |
|||
define) |
|||
[[ $(id -u) != 0 ]] && echo 'require root privilege, please prepend the command with `sudo`' && exit 10 |
|||
define |
|||
;; |
|||
esac |
|||
} |
|||
|
|||
# MAIN |
|||
|
|||
set -Eue |
|||
parse_options $* |
|||
perform_command |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue