Ativar / desativar o serviço DHCP em execução usando as linhas de comando do Linux

0

Gostaria de desativar o serviço DHCP em execução usando as linhas de comando do Linux, para usar meu próprio cliente DHCP ou definir endereços IP estáticos.

Eu sei que, como mencionado neste post , definindo o tipo de interface para estático em vez de dhcp em / etc / network / interfaces, o DHCP está desabilitado para a interface em questão.

Mas eu gostaria de fazer um script de shell que use linhas de comando para fazer isso e o contrário.

    
por ARM 13.09.2017 / 14:03

2 respostas

0

Ao manipular o endereço IP de uma interface enquanto ela está configurada para usar o dhcp, o risco é que o seu IP estático seja regularmente substituído.

Você então tem que matar o dchclient relacionado à sua interface (htop e kill). No entanto, parece que o dhclient armazena o pid de sua instância em um diretório padrão: /var/run/dhclient.{interface}.pid . Você pode então fazer:

ifce=eth0
kill -9 $(cat /var/run/dhclient.${ifce}.pid
sudo ifconfig $ifce [IP] netmask [NETMASK]

e para reativar o dhcp:

ifce=eth0
dhclient -pf /var/run/dhclient.${ifce}.pid $ifce

EDITAR

Parece que o gerenciador de rede monitora as instâncias do dhclient. Você pode então fornecer outra configuração para o gerente.

  1. remova todas as referências à sua interface no / etc / network / interfaces

  2. adicione a seguinte linha ao final de / etc / network / interfaces

    source /etc/network/interfaces.d/*.conf

  3. crie o diretório /etc/network/interfaces.d se ele não existir e os dois arquivos a seguir:

    • /etc/network/interfaces.d/ {interface} .dhcp que contém a configuração do dhcp da sua interface
    • /etc/network/interfaces.d/ {interface} .static que contém a configuração estática da sua interface
  4. você pode então mudar de dhcp para estático e vice-versa, copiando o arquivo para /etc/network/interfaces.d/{interface}.conf e reiniciando a interface,

    ifce=eth0
    cp /etc/network/interfaces.d/${ifce}.static /etc/network/interfaces.d/${ifce}.conf
    ifdown $ifce
    ifup $ifce
    

    ou

    ifce=eth0
    cp /etc/network/interfaces.d/${ifce}.dhcp /etc/network/interfaces.d/${ifce}.conf
    ifdown $ifce
    ifup $ifce
    
por 13.09.2017 / 15:06
1

Supondo que você tenha desativado o NetworkManager para as interfaces desejadas, você pode usar o comando 'ip'.

Assumir manualmente (digamos que sua interface é eth0):

ip link set eth0 up
ip addr add 192.168.0.2/255.255.0.0 broadcast 192.168.255.255 dev eth0
ip route add default via 192.168.0.1

Associar dinamicamente:

ip link set eth0 up
dhclient eth0
O comando

ip addr também aceita replace e change sub-comandos e você pode usar label SOMETHING para nomear seu dispositivo em formato legível. Por isso, deve ajudar a fazer o script da shell como você precisa.

Mais leituras:

  • man ip
  • comando ip explicado: link
  • folha de dicas do iproute2: link
por 13.09.2017 / 15:03