Alterando o nome do host em uma área de trabalho do Linux Mint para um valor aleatório no momento da inicialização

2

Ao alterar o nome do host para um conjunto aleatório de caracteres alfanuméricos em uma máquina que executa o Linux Mint (17.1 Rebecca, Cinnamon 64-bit), eu me deparo com alguns problemas.

O script a seguir altera o nome do host para um conjunto aleatório de caracteres alfanuméricos:

#!/bin/bash

### BEGIN INIT INFO
# Provides:          randomhostname
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Changing hostname to random value
# Description:       Changing hostname to random value
### END INIT INFO

old=$(cat /etc/hostname)
new=$(tr -dc 'A-Z0-9' < /dev/urandom | head -c12)
sed -i "s/$old/$new/g" /etc/hosts
sed -i "s/$old/$new/g" /etc/hostname

exit 0

Idealmente, a mudança do nome do host seria alcançada sem reiniciar o sistema, mas como /etc/init.d/hostname.sh start tem que ser executado posteriormente e esse arquivo não está presente nesta versão do Linux Mint (não tenho certeza sobre outra versão), reinicialize o sistema para que as alterações entrem em vigor. Então, fazer isso no momento da inicialização parece ser a melhor opção para mim no momento.

Mudei o arquivo para o diretório /etc/init.d / e o tornei executável com sudo chmod +x randomhostname . Depois disso, adicionei-o à sequência de inicialização com sudo update-rc.d randomhostname defaults .

Quando eu reinicio o sistema e faço login no Linux Mint eu posso ver a mudança do nome do host em / etc / hostname e / etc / hosts , que neste o caso é YKNG7Z4PJD7H . No entanto, não vejo isso ao usar o terminal (por exemplo, nome de usuário @ BFZJ7LB0BKAD) e recebo a seguinte mensagem ao usar o sudo:

username@BFZJ7LB0BKAD ~ $ sudo true
sudo: unable to resolve host BFZJ7LB0BKAD

Eu presumo que esse problema é causado pelo fato de que o script é executado na hora errada (talvez após certos serviços já terem sido iniciados) e o sistema ainda precisa ser reinicializado novamente para que as alterações anteriores entrem em vigor.

O que é considerado o modo correto de adicionar um script como este à sequência de inicialização para que as alterações entrem em vigor sem reinicializar outra vez? Ou existe uma maneira melhor de conseguir isso?

Eu realmente aprecio qualquer ajuda sobre essa questão.

Solução
Como roaima apontou, eu só tive que adicionar hostname "$new" no final do script para fazer as alterações funcionarem . Eu também adicionei parar e iniciar o serviço gerenciador de rede para forçar o registro do cliente na rede usando o novo nome de host.

#!/bin/bash

### BEGIN INIT INFO
# Provides:          randomhostname
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Changing hostname to random value
# Description:       Changing hostname to random value
### END INIT INFO

service network-manager stop

old=$(cat /etc/hostname)
new=$(tr -dc 'A-Z0-9' < /dev/urandom | head -c12)
sed -i "s/$old/$new/g" /etc/hosts
sed -i "s/$old/$new/g" /etc/hostname
hostname "$new"

service network-manager start

exit 0
    
por H de Vries 06.02.2015 / 12:13

1 resposta

0

Você não parece estar configurando o nome do host depois de reescrever /etc/hostname . Isso deve fazer o truque, adicionado após os dois sed linhas:

hostname "$new"

Se você estiver usando o DHCP e isso não resolveu o problema, dê uma olhada em Eu mudei meu nome de host, por que meu prompt do bash PS1 está inalterado para ver se isso é relevante para a sua situação.

"Rebecca" usa systemd e o arquivo usado para definir o nome do host é /etc/init/hostname.conf . Como adicionar seu script hostname em systemd é algo que vou deixar para outra pergunta (mais comumente conhecido como "um exercício para o leitor").

    
por 07.03.2015 / 01:21