diff options
author | Christian Hesse <mail@eworm.de> | 2022-08-04 12:15:46 +0200 |
---|---|---|
committer | Christian Hesse <mail@eworm.de> | 2022-08-10 09:30:20 +0200 |
commit | b2482a4f7d9a06a9c10a26eb1fb2b855d83e94c7 (patch) | |
tree | 6b9df7fe9c5cf4e7617b0fa6e0ce5d822c5cff9e | |
parent | 33226f2d76b6b7a06df6b76abbb3526100f5ae2d (diff) | |
download | isc-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-x | client/scripts/linux | 10 |
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 |