109 lines
2.8 KiB
Markdown
109 lines
2.8 KiB
Markdown
### 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. |