### Script Shell: `/usr/local/lxc-scripts/update-hosts.sh` ```sh #!/bin/bash # Ottieni l'indirizzo IP dell'interfaccia di rete del container SERVER_IP=$(ip route get 8.8.8.8 | awk '/src /{split($7,a,"/"); print a[1]}') # Leggi il nome del server dall'elenco degli indirizzi IP locali SERVER_NAME=$(hostname -I | awk '{for(i=1;i<=NF;i++) if ($i ~ /127\.0\.1\.1/) print $(i+1)}') # Controlla se SERVER_NAME è stato correttamente impostato if [ -z "$SERVER_NAME" ]; then echo "Errore: Nome del server non trovato nel file /etc/hosts." exit 1 fi # Aggiorna il file /etc/hosts aggiungendo la linea specificata echo "$SERVER_IP $SERVER_NAME" > /tmp/new_hosts # Leggi il contenuto originale di /etc/hosts while IFS= read -r line; do # Ignora le righe che contengono SERVER_IP ma non SERVER_NAME if [[ ! "$line" == *"$SERVER_IP"* ]] || [[ "$line" == *"127.0.1.1 $SERVER_NAME"* ]]; then echo "$line" >> /tmp/new_hosts fi done < /etc/hosts # Sostituisci il file /etc/hosts con la versione aggiornata mv /tmp/new_hosts /etc/hosts # Verifica che l'aggiunta sia stata effettuata correttamente if grep -q "^$SERVER_IP $SERVER_NAME" /etc/hosts; then echo "Hostname aggiunto correttamente." else echo "Errore nell'aggiunta del hostname." fi ``` ### Manuale per L'Utilizzo #### 1. Creazione dello Script Crea lo script `/usr/local/lxc-scripts/update-hosts-lxc.sh` con i contenuti forniti sopra. ```sh sudo nano /usr/local/lxc-scripts/update-hosts-lxc.sh ``` Incolla lo script e salva il file. #### 2. Imposta le Permessi del File Imposta i permessi appropriati per eseguire lo script: ```sh sudo chmod +x /usr/local/lxc-scripts/update-hosts-lxc.sh ``` #### 3. Configurazione del Servizio LXC Crea o modifica il file di configurazione del servizio `/etc/systemd/system/lxc-update-hosts.service` con i contenuti forniti sopra. ```sh sudo nano /etc/systemd/system/lxc-update-hosts.service ``` ```sh [Unit] Description=Update /etc/hosts for LXC container After=lxc-container-start.target [Service] Type=oneshot ExecStart=/usr/local/lxc-scripts/update-hosts-lxc.sh RemainAfterExit=yes [Install] WantedBy=default.target ``` Incolla il file di servizio e salva il file. #### 4. Rinnova il Servizio e Riavvia Rinnova il servizio systemd per rileggere la configurazione del nuovo servizio: ```sh sudo systemctl daemon-reload ``` Riavvia il servizio per applicare le modifiche: ```sh sudo systemctl restart lxc-update-hosts.service ``` #### 5. Verifica Verifica che lo script stia funzionando correttamente: 1. Avvia o riavvia un contenitore LXC. 2. Controlla il file `/etc/hosts` nel contenitore per verificare se il nome del server è stato aggiunto correttamente. ### Considerazioni Finali - Assicurati che il file `/etc/hosts` originale contenga una riga con `127.0.1.1` e il nome del server desiderato. - Se la riga non esiste, lo script restituirà un errore.