v1.0.0 bash scripts network

Host Generator Manager

Un'utility Bash per gestire le voci di /etc/hosts secondo il pattern 'disponibili / abilitati', con gestione degli alias locali e rigenerazione automatica protetta da backup.

Screenshot about the usage of the script in the terminal

Screenshot while using this utility to handle the /etc/hosts

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
  • Eseguilo come root o con sudo:

    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:

  1. Costruisce un file hosts temporaneo: riga 127.0.0.1 + hosts-main/main.conf + host abilitati + hosts-main/endfile.conf.
  2. Copia il file /etc/hosts corrente in backups/hosts.bkp.TIMESTAMP.
  3. 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.