Cosa fa questo strumento
generator-hosts.sh ti aiuta a gestire le voci del file '/etc/hosts' mantenendo le singole definizioni degli host in una directory hosts-available/ e abilitandole tramite collegamenti simbolici in hosts-enabled/.
Lo script può rigenerare /etc/hosts a partire dalle voci abilitate, conserva backup automatici e supporta alias locali (un elenco di nomi alternativi che vengono aggiunti automaticamente alla riga 127.0.0.1).
Avvio Rapido e Prerequisiti
- Testato su sistemi con Bash (utilizza funzionalità avanzate come array e shopt).
- È necessario eseguire lo script come root (in quanto scrive nel file di sistema /etc/hosts).
- Posiziona lo script e le relative cartelle sotto un'unica directory radice predefinita:
/opt/hosts_config/ - Rendi lo script eseguibile:
sudo chmod +x /opt/hosts_config/generator-hosts.sh sudo ln -s /opt/hosts_config/generator-hosts.sh /usr/local/sbin/generator-hosts
sudo generator-hosts -l
Come Funziona — Concetti Chiave
- Host disponibili: Singole voci .conf memorizzate in hosts-available/. Ciascun file contiene solitamente una riga del tipo:
192.168.1.10 esempio.local esempio.com - Host abilitati: L'abilitazione di un host crea un symlink in hosts-enabled/ che punta al file disponibile. La rigenerazione legge i file abilitati in ordine e li aggiunge a /etc/hosts.
- Alias locali: I file *.lhost all'interno di localhost-aliases/ vengono letti; la prima riga di ciascun file viene aggiunta come alias alla riga 127.0.0.1 (consentendo di definire facilmente myapp.local, app.test, ecc.). 0.lhost è utilizzato per l'host di base e non può essere rimosso.
- File Main e End: I file opzionali main.conf (inserito dopo la riga 127.0.0.1) e endfile.conf (aggiunto in coda) risiedono in hosts-main/.
- Backup: Prima di sovrascrivere /etc/hosts, lo script copia il file attuale in backups/hosts.bkp.TIMESTAMP.
Utilizzo ed Esempi di Comandi
# Elenca gli host abilitati e disabilitati sudo generator-hosts -l # Abilita un host (selezione interattiva tramite indice) sudo generator-hosts -e # Disabilita un host (selezione interattiva) sudo generator-hosts -d # Crea un nuovo file host in modo interattivo sudo generator-hosts -c # Rigenera /etc/hosts (scrive il file e crea il backup) sudo generator-hosts -r # Esegui una simulazione / anteprima di ciò che verrebbe scritto sudo generator-hosts -s # Elenca gli alias locali sudo generator-hosts -hl # Aggiungi un alias locale sudo generator-hosts -ha # Rimuovi un alias locale sudo generator-hosts -hr # Mostra main.conf e endfile.conf sudo generator-hosts -sw
Creazione di un File Host (Formato)
Ogni file in hosts-available/ è un semplice file di testo con estensione .conf. Il formato a riga singola è:
IP | spazio | domini-separati-da-spazio
Esempi:
192.168.1.10 myapp.local myapp.example.com 127.0.0.1 local.test another.local
Rigenerazione di /etc/hosts e Backup
L'opzione -r o regenerate_hosts esegue i seguenti passaggi:
- Costruisce un file hosts temporaneo:
riga 127.0.0.1 + hosts-main/main.conf + host abilitati + hosts-main/endfile.conf. - Copia il file /etc/hosts corrente in backups/hosts.bkp.TIMESTAMP.
- Sposta il file generato in /etc/hosts e imposta i permessi corretti a chmod 644.
Risoluzione dei Problemi
- /etc/hosts non aggiornato: Assicurati di eseguire lo script come root. Verifica che i backup esistano in backups/ e ispeziona l'anteprima con l'opzione -s.
- File host non applicato: Verifica che il collegamento simbolico abilitato esista in hosts-enabled/ e punti correttamente al file hosts-available/nome.conf.
- Permessi: /etc/hosts viene impostato a 644 dopo la scrittura.
Licenza
Questo progetto e lo script generator-hosts.sh sono distribuiti sotto licenza MIT.