¿Cómo regenerar 70-persistent-net.rules sin reiniciar?

El archivo /etc/udev/rules.d/70-persistent-net.rules se genera automáticamente en un sistema Linux con udev, si no existe, durante reiniciar. Pero me gustaría saber cómo crear este archivo de reglas (con un comando) sin reiniciar el servidor.

Estuve buscando en Google por un tiempo y descubrí que el archivo de reglas es generado por este script:

/lib/udev/write_net_rules 

Sin embargo, es imposible ejecutar este script desde la línea de comandos, ya que (supongo) quiere ser iniciado por udev, con algunas variables de entorno configuradas correctamente. Al iniciarlo manualmente, se imprime el mensaje de error «falta $ INTERFACE». Incluso si configuro la variable env INTERFACE = eth0 antes del inicio del script, todavía imprime el error «falta una coincidencia válida». Sin mencionar que tengo dos interfaces (eth0 y eth1) y quiero que se genere el archivo de reglas para ambas.

También estaba pensando en activar eventos udev como este, esperando que inicie el script desde udev mismo, pero nada cambia:

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

Entonces, ¿alguien sabe ¿Cómo regenerar las reglas de red persistentes en el archivo /etc/udev/rules.d/70-persistent-net.rules sin reiniciar?

Comentarios

  • ¿Cuál es su ¿distribución? ¿Qué tipo de sistema de inicio usa?
  • Yo diría que es irrelevante. ' uso Slackware con eUdev y sysvinit. Estaba examinando los scripts de inicio para averiguar qué se ejecuta y genera el archivo de reglas, pero solo encontré el disparador udevadm, con un comentario de que este es el comando para generar las reglas persistentes, pero de alguna manera esto solo funciona al reiniciar, no efecto si lo ejecuto manualmente.
  • Podría ser relevante ya que yo, en Arch, no tengo el 70-persistent-net.rules ni el /lib/udev/write_net_rules secuencia de comandos. Por lo tanto, no puedo ' t verificar, pero presumiblemente la variable $INTERFACE está configurada en el propio script. Lo más probable es que se pase como argumento. ¿Puede mostrarnos el contenido del script?
  • El script simplemente usa la variable $INTERFACE. Hay muchas más variables que se usan simplemente, nunca declaradas. Es ' s porque es llamado por udev, y udev establece todas las variables env antes de ejecutar el script en el arranque.
  • ¿Realmente necesita saber cómo regenerarlo, o simplemente editar el archivo para reflejar la nueva realidad?

Responder

Según man page --action=change es el valor predeterminado para udevadm.

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

Por lo tanto, será mejor que intente --action=add en su lugar. Debería ayudar:

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

Comentarios

  • intel_rapl: no se encontraron dominios rapl válidos en el paquete 0

Respuesta

En Ubuntu Server 16.04LTS no existe 70-persistent-net.rules.

todo lo que hice fue ejecutar:

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

Luego, cree el archivo usando

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

y agregue lo siguiente

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

:wq para guardar el archivo

luego reinicie y ajuste su archivo / etc / network / interfaces. Luego reinicie nuevamente.

Comentarios

  • La pregunta es " ¿Cómo regenerar 70-persistent-net.rules sin reiniciar? " Tu respuesta contiene dos reinicios. ¿Cómo es esto una respuesta a la pregunta?

Respuesta

Tuve el mismo problema, pero noté que aún podría ver las interfaces en el ip addr lista. Usé lo siguiente (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 interfaz. Esto se utilizó para «recuperar» mi archivo. (Nota: una invocación enumerará todas las interfaces + agregará un cambio de nombre para que coincida con una, por lo que te recomiendo que eches un vistazo al archivo de salida después de una invocación)

Definitivamente existen diferencias entre los sistemas operativos y las implementaciones actuales de UDEV y los scripts de soporte. . Para tener en cuenta, estaba usando CentOS 6.8 cuando hice esto con éxito.

Crédito: principalmente hice referencia a este sitio. Hay un comentario en algunos hilos que hablan sobre la modificación del script, pero preferí usar variables de entorno como estaba más limpio: https://access.redhat.com/discussions/1240213

Comentarios

  • Mierda, espera. Lo ' lo siento, ese fue el comando que no funcionó. Necesito actualizar la respuesta con el paso que hice
  • Ok, ' he actualizado cómo arreglé el mío. Espero que funcione si se aplica a su situación.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *