====== 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:localectl|localectl - Locale und Sprache verwalten]] * [[sammlung:timedatectl|timedatectl - Zeit und Datum verwalten]] * [[sammlung:systemd|SystemD Grundlagen]] * [[sammlung:wichtige_konfigurationsdateien|Wichtige Konfigurationsdateien]] {{tag>linux systemd hostname system konfiguration}}