Como regenerar 70-persistent-net.rules sem reinicializar?

O arquivo /etc/udev/rules.d/70-persistent-net.rules é gerado automaticamente em um sistema Linux com udev, se não existir, durante reinício. Mas gostaria de saber como criar este arquivo de regras (com um comando) sem reiniciar o servidor.

Eu estava pesquisando por um tempo e descobri que o arquivo de regras é gerado por este script:

/lib/udev/write_net_rules 

No entanto, é impossível executar este script a partir da linha de comando, pois (presumo) ele deseja ser iniciado pelo udev, com algumas variáveis de ambiente definidas corretamente. Iniciá-lo manualmente imprime a mensagem de erro “$ INTERFACE ausente”. Mesmo se eu definir a variável env INTERFACE = eth0 antes do início do script, ele ainda exibe o erro “correspondência válida ausente”. Sem mencionar que tenho duas interfaces (eth0 e eth1) e quero que o arquivo de regras seja gerado para ambas.

Eu também estava pensando em acionar eventos do udev como este, esperando que ele inicie o script do próprio udev, mas nada muda:

udevadm trigger --type=devices --action=change 

Então, alguém sabe como regenerar as regras de rede persistentes no arquivo /etc/udev/rules.d/70-persistent-net.rules sem reinicializar?

Comentários

  • Qual é o seu distribuição? Que tipo de sistema de inicialização ele usa?
  • Eu diria que é irrelevante. Eu ' estou usando o Slackware com eUdev e sysvinit. Eu estava examinando os scripts de inicialização para descobrir o que é executado que gera o arquivo de regras, mas encontrei apenas o gatilho udevadm, com um comentário de que este é o comando para gerar as regras persistentes, mas de alguma forma isso funciona apenas na reinicialização, não efeito se eu executá-lo manualmente.
  • Pode ser relevante, já que eu, no Arch, não tenho nem o 70-persistent-net.rules nem o /lib/udev/write_net_rules script. Portanto, posso ' t verificar, mas presumivelmente a variável $INTERFACE está definida no próprio script. Muito provavelmente, é considerado um argumento. Você pode nos mostrar o conteúdo do script?
  • O script simplesmente usa a variável $INTERFACE. Existem muito mais variáveis simplesmente usadas, nunca declaradas. É ' s porque é chamado pelo udev, e o udev define todas as variáveis env antes de executar o script na inicialização.
  • Você realmente precisa saber como regenerá-lo ou você poderia simplesmente editar o arquivo para refletir a nova realidade?

Resposta

De acordo com o homem página --action=change é o valor padrão para udevadm.

 -c, --action=ACTION Type of event to be triggered. The default value is change. 

Portanto, é melhor você tentar --action=add. Deve ajudar:

/sbin/udevadm trigger --type=devices --action=add 

Comentários

  • intel_rapl: nenhum domínio rapl válido encontrado no pacote 0

Resposta

No Ubuntu Server 16.04LTS, o 70-persistent-net.rules não existe.

tudo o que fiz foi executar:

ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules 

Em seguida, crie o arquivo usando

sudo vi /etc/systemd/network/10-internet.link 

e adicione o seguinte

[Match] Path=pci-0000:(your device mac address) [Link] Name=eth0 (or whatever you want to name it) 

:wq para salvar o arquivo

em seguida, reinicie e ajuste seu arquivo / etc / network / interfaces. Em seguida, reinicie novamente.

Comentários

  • A questão é " Como regenerar 70-persistent-net.rules sem reinicializar? " Sua resposta contém duas reinicializações. Como isso é uma resposta à pergunta?

Resposta

Eu tive o mesmo problema, mas percebi que ainda pode ver as interfaces no ip addr. Usei o seguinte (como root):

# ip addr # to get my mac addresses # export INTERFACE=eth0; export MATCHADDR="xx:xx:xx:xx:xx:xx"; /lib/udev/write_net_rules # replace the 00"s with the real mac addr 

Repita para cada interface. Isso foi usado para “recuperar” meu arquivo. (Nota: uma invocação irá listar todas as interfaces + adicionar renomear para corresponder a uma, então eu recomendo que você dê uma olhada no arquivo de saída após uma invocação)

Existem definitivamente diferenças entre SOs e implementações UDEV atuais e scripts de suporte . Para observar, eu estava usando o CentOS 6.8 quando fiz isso com sucesso.

Crédito – Eu referenciei este site principalmente. Há um comentário alguns tópicos abaixo que falam sobre como modificar o script, mas eu preferi usar variáveis de ambiente porque eram mais limpas: https://access.redhat.com/discussions/1240213

Comentários

  • Merda – espere. Eu ' desculpe, esse foi o comando que não funcionou. Preciso atualizar a resposta com a etapa que fiz
  • Ok, ' atualizei como realmente consertei o meu. Espero que funcione se se aplicar à sua situação.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *