Differences between revisions 8 and 9
Revision 8 as of 2014-07-20 13:24:16
Size: 3831
Comment: sync with English master
Revision 9 as of 2015-01-24 11:48:27
Size: 3841
Comment: sync with English master
Deletions are marked like this. Additions are marked like this.
Line 37: Line 37:
Fare riferimento alla sezione [[http://www.process-one.net/docs/ejabberd/guide_en.html#htoc77|Change Computer Hostname]] della "Installation and Operation Guide" di ejabberd. Fare riferimento alla sezione [[http://www.process-one.net/docs/ejabberd/guide_en.html#htoc80|Change Computer Hostname]] della "Installation and Operation Guide" di ejabberd.
Line 70: Line 70:
[ -z $1 ] && usage [ "$1" ] || usage
Line 72: Line 72:
vecchio=`hostname` vecchio=$(hostname)
Line 75: Line 75:
grep $vecchio /etc/ -rl 2>/dev/null | while read file
   do
      sed s:$vecchio:$nuovo:g $file > ${file}.tmp
      mv ${file}.tmp $file
   done
grep "$vecchio" /etc/ -rl 2>/dev/null |
while read file
do
      sed "s:$vecchio:$nuovo:g" "$file" > "$file.tmp"
      mv -f "$file.tmp" "$file"
done
Line 89: Line 91:
   echo "uso: $0 nuovo_hostname"    echo "uso: $0 <nuovo nomehost>"
Line 93: Line 95:
[ -z $1 ] && usage [ "$1" ] || usage
Line 95: Line 97:
vecchio=`hostname` vecchio=$(hostname)

Traduzioni: English - Italiano


Rinominare un computer

Questa pagina spiega come cambiare l'hostname di un sistema (cioè rinominare un computer o un server).

Sintesi: hostname(1) non è sufficiente.

Rete

  • Aggiornare /etc/hostname.

  • Aggiornare /etc/hosts in modo che gli indirizzi locali risolvano con il nuovo nome del sistema.

  • Ricaricare la configurazione della rete; sono possibili due opzioni:
    • ricaricare i file di configurazione

      <!> Ciò disconnetterà temporaneamente il sistema dalla rete (di solito ssh resiste alle disconnessioni brevi)

      <!> Ciò potrebbe disconnettere definitivamente il sistema dalla rete in quanto non è in grado di ripristinare le connessioni; in questo caso riavviare, non perché sia la via più semplice ma perché accerta che la configurazione sia corretta

      invoke-rc.d hostname.sh start
      invoke-rc.d networking force-reload
      invoke-rc.d network-manager force-reload

      ToDo: è utile ricaricare network-manager?

    • oppure il metodo facile: riavviare il sistema.

Applicazioni specifiche

avahi

Avahi è utilizzato per pubblicare (annunciare) servizi locali; se si modifica /etc/avahi/* bisogna eseguire:

  • invoke-rc.d avahi-daemon force-reload

CUPS

Modificare il file /etc/printcap; è necessario riavviare il servizio.

ejabberd

Fare riferimento alla sezione Change Computer Hostname della "Installation and Operation Guide" di ejabberd.

Exim

Modificare il valore di hostname= nel file /etc/exim4/update-exim4.conf.conf; è necessario riavviare il servizio.

Mailname

Modificare il file /etc/mailname; non è necessario riavviare il servizio.

Message Of The Day

Modificare il file /etc/motd; non è necessario riavviare il servizio.

OpenSSH server

Modificare i file /etc/ssh/ssh_host_rsa_key.pub, /etc/ssh/ssh_host_dsa_key.pub e /etc/ssh/ssh_host_ecdsa_key.pub (root@hostname alla fine); è necessario riavviare il servizio.

ssmtp

Ssmtp è un server SMTP leggero in sola uscita.

Modificare il valore di hostname= nel file /etc/ssmtp/ssmtp.conf; non è necessario riavviare il servizio.

sysklogd

Al fine di rendere visibile il nuovo hostname sul syslog è necessario riavviare il servizio sysklogd.

Idea di script per aiutare nel passaggio

Invasivo

Questo script è pericoloso. Bisogna controllare che tutti i file elencati da grep -rl "$vecchio" /etc debbano realmente essere modificati prima di eseguirlo:

   1 #!/bin/bash
   2 #
   3 usage() {
   4    echo "uso: $0 nuovo_hostname"
   5    exit 1
   6 }
   7 
   8 [ "$1" ] || usage
   9 
  10 vecchio=$(hostname)
  11 nuovo=$1
  12 
  13 grep "$vecchio" /etc/ -rl 2>/dev/null |
  14 while read file
  15 do
  16       sed "s:$vecchio:$nuovo:g" "$file" > "$file.tmp"
  17       mv -f "$file.tmp" "$file"
  18 done

È meglio fare un grep prima...

Non così invasivo

#!/bin/bash
# 
usage() {
   echo "uso: $0 <nuovo nomehost>"
   exit 1
}

[ "$1" ] || usage

vecchio=$(hostname)
nuovo=$1

for file in \
   /etc/exim4/update-exim4.conf.conf \
   /etc/printcap \
   /etc/hostname \
   /etc/hosts \
   /etc/ssh/ssh_host_rsa_key.pub \
   /etc/ssh/ssh_host_dsa_key.pub \
   /etc/motd \
   /etc/ssmtp/ssmtp.conf
do
   [ -f $file ] && sed -i.old -e "s:$vecchio:$nuovo:g" $file
done

È meglio fare un grep prima...


Si veda anche