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
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.
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?$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.