Comment régénérer 70-persistent-net.rules sans redémarrage?

Le fichier /etc/udev/rules.d/70-persistent-net.rules est généré automatiquement sur un système Linux avec udev, sil nexiste pas, pendant redémarrer. Mais jaimerais savoir comment créer ce fichier de règles (avec une commande) sans redémarrer le serveur.

Jai cherché sur Google pendant un moment et jai trouvé que le fichier de règles est généré par ce script:

/lib/udev/write_net_rules 

Cependant, il est impossible dexécuter ce script à partir de la ligne de commande, car (je suppose) quil veut être démarré par udev, avec certaines variables denvironnement définies correctement. Le démarrage manuel imprime le message derreur « $ INTERFACE manquant ». Même si jai défini la variable denvironnement INTERFACE = eth0 avant le démarrage du script, il affiche toujours lerreur « correspondance valide manquante ». Sans oublier que jai deux interfaces (eth0 et eth1) et je veux que le fichier de règles soit généré pour les deux.

Je pensais aussi déclencher des événements udev comme celui-ci, en espérant que le script démarrera à partir dudev lui-même, mais rien ne change:

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

Alors, est-ce que quelquun sait comment régénérer les règles de réseau persistantes dans le fichier /etc/udev/rules.d/70-persistent-net.rules sans redémarrage?

Commentaires

  • Quel est votre Distribution? Quel type de système dinitialisation utilise-t-il?
  • Je dirais que ce nest pas pertinent. Jutilise ' Slackware avec eUdev et sysvinit. Jexaminais les scripts de démarrage afin de savoir ce qui est exécuté qui génère le fichier de règles, mais je nai trouvé que le déclencheur udevadm, avec un commentaire indiquant quil sagit de la commande pour générer les règles persistantes, mais dune manière ou dune autre, cela ne fonctionne quau redémarrage, non effet si je lexécute manuellement.
  • Cela pourrait être pertinent car, sur Arch, je nai ni le 70-persistent-net.rules ni le /lib/udev/write_net_rules script. Par conséquent, je peux ' t vérifier, mais vraisemblablement la variable $INTERFACE est définie dans le script lui-même. Très probablement, il est passé comme argument. Pouvez-vous nous montrer le contenu du script?
  • Le script utilise simplement la variable $INTERFACE. Il y a beaucoup plus de variables simplement utilisées, jamais déclarées. Il ' car il est appelé par udev, et udev définit toutes les variables denvironnement avant dexécuter le script au démarrage.
  • Avez-vous réellement besoin de savoir comment le régénérer, ou pouvez-vous simplement modifier le fichier pour refléter la nouvelle réalité?

Réponse

Selon lhomme page --action=change est la valeur par défaut de udevadm.

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

Par conséquent, vous feriez mieux dessayer --action=add à la place. Cela devrait aider:

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

Commentaires

  • intel_rapl: aucun domaine rapl valide trouvé dans le package 0

Réponse

Dans Ubuntu Server 16.04LTS, les 70-persistent-net.rules n’existent pas.

je nai fait que lancer:

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

Ensuite, créez le fichier en utilisant

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

et ajoutez ce qui suit

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

:wq pour enregistrer le fichier

puis redémarrez et ajustez votre fichier / etc / network / interfaces. Puis redémarrez à nouveau.

Commentaires

  • La question est " Comment régénérer 70-persistent-net.rules sans redémarrage? " Votre réponse contient deux redémarrages. En quoi est-ce une réponse à la question?

Réponse

Jai eu le même problème, mais jai remarqué que je pouvait toujours voir les interfaces dans le ip addr. Jai utilisé ce qui suit (en tant que 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 

Répéter pour chaque interface. Cela a été utilisé pour « récupérer » mon fichier. (Remarque: un appel listera toutes les interfaces + ajoutera un nouveau nom pour celui qui correspond, donc je vous recommande de jeter un œil au fichier de sortie après un appel)

Il y a certainement des différences entre les OS et les implémentations UDEV actuelles et les scripts de support . A noter, jutilisais CentOS 6.8 quand jai réussi.

Crédit – Jai surtout référencé ce site. Il y a un commentaire quelques fils plus bas qui parlent de la modification du script, mais jai préféré utiliser variables denvironnement car il était plus propre: https://access.redhat.com/discussions/1240213

Commentaires

  • Merde – attendez. Je ' m désolé, cétait la commande qui na pas fonctionné. Je dois mettre à jour la réponse avec létape que jai effectuée
  • OK, jai ' mis à jour la façon dont jai réellement corrigé le mien. Jespère que cela fonctionne si cela sapplique à votre situation.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *