sammlung:hostnamectl
Inhaltsverzeichnis
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
