From b2482a4f7d9a06a9c10a26eb1fb2b855d83e94c7 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 4 Aug 2022 12:15:46 +0200 Subject: [!99] replace `hostname` with `uname -n` & `hostnamectl` 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`. --- client/scripts/linux | 10 ++++++++-- 1 file 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 -- cgit v1.2.1