summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Hesse <mail@eworm.de>2022-08-04 12:15:46 +0200
committerChristian Hesse <mail@eworm.de>2022-08-10 09:30:20 +0200
commitb2482a4f7d9a06a9c10a26eb1fb2b855d83e94c7 (patch)
tree6b9df7fe9c5cf4e7617b0fa6e0ce5d822c5cff9e
parent33226f2d76b6b7a06df6b76abbb3526100f5ae2d (diff)
downloadisc-dhcp-uname-n.tar.gz
[!99] replace `hostname` with `uname -n` & `hostnamectl`uname-n
The former belongs to package `inetutils`, which has some security implications, so let's use `uname` from `coreutils` to get the hostname. For *setting* the hostname things are more limited. Let's use `hostnamectl` from `systemd` if available. Fall back to `hostname`, then `sysctl`.
-rwxr-xr-xclient/scripts/linux10
1 files changed, 8 insertions, 2 deletions
diff --git a/client/scripts/linux b/client/scripts/linux
index c4e51f6d..fe4da445 100755
--- a/client/scripts/linux
+++ b/client/scripts/linux
@@ -113,7 +113,7 @@ set_hostname() {
local current_hostname
if [ -n "$new_host_name" ]; then
- current_hostname=$(hostname)
+ current_hostname=$(uname -n)
# current host name is empty, '(none)' or 'localhost' or differs from new one from DHCP
if [ -z "$current_hostname" ] ||
@@ -121,7 +121,13 @@ set_hostname() {
[ "$current_hostname" = 'localhost' ] ||
[ "$current_hostname" = "$old_host_name" ]; then
if [ "$new_host_name" != "$old_host_name" ]; then
- hostname "$new_host_name"
+ if command -v hostnamectl >/dev/null; then
+ hostnamectl set-hostname --transient "$new_host_name"
+ elif command -v hostname >/dev/null; then
+ hostname "$new_host_name"
+ else
+ sysctl -w kernel/hostname="$new_host_name"
+ fi
fi
fi
fi