Benutzer-Werkzeuge

Webseiten-Werkzeuge


sammlung:hostnamectl

hostnamectl - Hostname verwalten

hostnamectl ist ein systemd-Tool zur Verwaltung des System-Hostnames. Es ermöglicht das Anzeigen und Setzen des Hostnames sowie zusätzlicher Systemidentifikationsinformationen wie Betriebssystem, Kernel-Version und Hardware-Informationen.

Voraussetzungen

  • Zugriff auf die Linux-Kommandozeile
  • SystemD-basiertes System (Ubuntu 15.04+, Debian 8+, CentOS 7+)
  • Root-Rechte zum Ändern des Hostnames

Grundlegende Syntax

hostnamectl [OPTIONEN] [BEFEHL]

Hostname-Typen

Linux unterscheidet drei Arten von Hostnamen:

Typ Beschreibung Beispiel
Static Permanenter Hostname, gespeichert in /etc/hostname server01
Transient Temporärer Hostname vom Kernel, kann sich zur Laufzeit ändern server01.local
Pretty Freiformatiger, beschreibender Name für Anzeige Web Server 01

Häufige Anwendungsfälle

Hostname anzeigen

# Vollständige Systeminformationen
hostnamectl
 
# Nur Hostname ausgeben
hostnamectl hostname
 
# Alternative (klassisch)
hostname

Ausgabe-Beispiel:

   Static hostname: server01
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 1234567890abcdef1234567890abcdef
           Boot ID: fedcba0987654321fedcba0987654321
    Virtualization: kvm
  Operating System: Ubuntu 22.04.3 LTS
            Kernel: Linux 5.15.0-91-generic
      Architecture: x86-64

Hostname setzen

# Static Hostname setzen (permanent)
sudo hostnamectl set-hostname meinserver
 
# Mit FQDN (Fully Qualified Domain Name)
sudo hostnamectl set-hostname server01.example.com
 
# Nur Pretty Hostname setzen
sudo hostnamectl set-hostname "Production Web Server" --pretty
 
# Transient Hostname setzen (temporär)
sudo hostnamectl set-hostname temp-server --transient

Nach Hostname-Änderung

# /etc/hosts anpassen
sudo nano /etc/hosts
 
# Alte Einträge ersetzen:
127.0.1.1   alter-name
# Durch neue ersetzen:
127.0.1.1   neuer-name

Erweiterte Optionen

Chassis-Typ setzen

# Chassis-Typ definieren (für Systemerkennung)
sudo hostnamectl set-chassis server
 
# Mögliche Werte:
# desktop, laptop, server, tablet, handset, watch, vm, container

Deployment-Umgebung

# Deployment-Umgebung setzen
sudo hostnamectl set-deployment production
 
# Beispiele: development, testing, staging, production

Location setzen

# Standort des Systems
sudo hostnamectl set-location "Rechenzentrum Frankfurt, Rack 12"

Praktische Beispiele

Komplett-Konfiguration für Server

# Hostname mit allen Informationen setzen
sudo hostnamectl set-hostname web01.example.com
sudo hostnamectl set-hostname "Production Webserver 01" --pretty
sudo hostnamectl set-chassis server
sudo hostnamectl set-deployment production
sudo hostnamectl set-location "DC Frankfurt Rack 12"
 
# /etc/hosts aktualisieren
echo "127.0.1.1 web01.example.com web01" | sudo tee -a /etc/hosts
 
# Ergebnis prüfen
hostnamectl

Hostname-Regeln und Best Practices

# Gültige Zeichen: a-z, 0-9, Bindestrich (-)
# NICHT erlaubt: Leerzeichen, Unterstriche, Sonderzeichen
# Max. 64 Zeichen
 
# Gut:
sudo hostnamectl set-hostname web-server-01
 
# Schlecht:
sudo hostnamectl set-hostname "web_server 01"  # Fehler!

Hostname in Skripten verwenden

#!/bin/bash
# Hostname in Variable speichern
HOSTNAME=$(hostnamectl hostname)
 
# Prüfen ob Hostname gesetzt ist
if [ -z "$HOSTNAME" ]; then
    echo "Kein Hostname gesetzt!"
    exit 1
fi
 
echo "Arbeite auf Server: $HOSTNAME"

Informationen abfragen

Detaillierte Systeminformationen

# Vollständige Ausgabe
hostnamectl status
 
# Als JSON (für Skripte)
hostnamectl --json=pretty
 
# Einzelne Felder abfragen
hostnamectl --property=StaticHostname
hostnamectl --property=KernelVersion
hostnamectl --property=OperatingSystemPrettyName

Hardware-Informationen

# Chassis-Typ anzeigen
hostnamectl --property=Chassis
 
# Virtualisierung prüfen
hostnamectl --property=Virtualization
 
# Architektur
hostnamectl --property=Architecture

Konfigurationsdateien

/etc/hostname

Der Static Hostname wird hier gespeichert:

# Inhalt anzeigen
cat /etc/hostname
 
# Manuell bearbeiten (nicht empfohlen, besser hostnamectl nutzen)
echo "neuer-server" | sudo tee /etc/hostname

/etc/machine-info

Zusätzliche Systeminfos (Pretty Name, Chassis, etc.):

# Inhalt anzeigen
cat /etc/machine-info
 
# Beispiel-Inhalt:
PRETTY_HOSTNAME="Production Web Server"
CHASSIS="server"
DEPLOYMENT="production"
LOCATION="DC Frankfurt Rack 12"

Integration mit Cloud-Init

Bei Cloud-Instanzen (AWS, Azure, etc.) wird der Hostname oft von Cloud-Init gesetzt:

# Cloud-Init Konfiguration prüfen
cat /etc/cloud/cloud.cfg | grep preserve_hostname
 
# Änderungen persistent machen
# In /etc/cloud/cloud.cfg setzen:
preserve_hostname: true

Wichtige Hinweise

  • Hostname-Änderungen erfordern keinen Neustart
  • Nach Änderung sollte /etc/hosts aktualisiert werden
  • Bei DNS-basierten Netzwerken muss der DNS-Eintrag passen
  • Einige Dienste (z.B. Mailserver) benötigen FQDN
  • Cloud-Instanzen können Hostname bei Neustart zurücksetzen

Fehlerbehebung

Hostname wird nicht übernommen

# Dienste, die Hostname cachen, neu starten
sudo systemctl restart systemd-hostnamed
 
# Prüfen ob /etc/hostname existiert
ls -l /etc/hostname
 
# Manuelle Synchronisation
sudo hostnamectl set-hostname $(cat /etc/hostname)

Cloud-Init überschreibt Hostname

# Preserve Hostname aktivieren
sudo nano /etc/cloud/cloud.cfg
# Setze: preserve_hostname: true
 
# Oder Cloud-Init Netzwerk-Modul deaktivieren
sudo touch /etc/cloud/cloud-init.disabled

Hostname enthält ungültige Zeichen

# Bereinigungsfunktion
clean_hostname() {
    echo "$1" | tr '[:upper:]' '[:lower:]' | tr -cd 'a-z0-9-' | cut -c1-64
}
 
# Verwendung
NEW_HOSTNAME=$(clean_hostname "Web Server 01")
sudo hostnamectl set-hostname "$NEW_HOSTNAME"

Siehe auch

sammlung/hostnamectl.txt · Zuletzt geändert: von 127.0.0.1