InicioLinuxEjecutar un script al inicio como root

Ejecutar un script al inicio como root

Linux4/3/2017
Definiendo el objetivo a conseguir El comportamiento deseado es el siguiente: tras ponerse en marcha el servicio NetworkManager por primera vez, éste deberá ser reiniciado sin pedir la contraseña del administrador, de modo que el usuario no tenga que intervenir. Esto supone que el script que ejecute la tarea deberá ser lanzado como root. Creando el script de bash Vamos a implementarlo en el directorio /usr/local/bin, obviamente con root como propietario. Me gusta usar el editor nano, cada cual que utlice el que prefiera: sudo nano /usr/local/bin/reiniciar-red.sh Le he dado un nombre descriptivo, que nunca está de más. En el interior del archivo, tan solo estas sencillas líneas: #!/bin/bash systemctl restart NetworkManager Guardamos con CTRL + O y salimos con CTRL + X. A continuación, le damos permisos de ejecución con: sudo chmod +x /usr/local/bin/reiniciar-red.sh Creando un nuevo servicio de systemd Comentaba en el artículo anterior que había tratado de ejecutar el script que acabamos de crear como una tarea que debía lanzarse con cada inicio del sistema, empleando para ello el viejo y confiable crontab. Solo durante el primer reinicio se llevó a cabo, fallando en todos los posteriores. Es por ello que lo que haremos será crear un nuevo servicio de systemd que se ejecute tras NetworkManager: sudo nano /etc/systemd/system/reiniciar-red.service Le he dado el mismo nombre al servicio y al script, pero esto no es obligatorio. En este recién creado servicio vamos a poner lo siguiente: After=NetworkManager.service [Service ] Type=oneshot ExecStart=/usr/local/bin/reiniciar-red.sh [Install ] WantedBy=multi-user.target La primera de las instrucciones especifica que se debe iniciar tras NetworkManager. Bastante obvio. En la segunda parte encontramos dos líneas: la primera de ellas, que era la que me faltaba en mis anteriores tentativas, indica que se trata de un servicio que se ejecuta una sola vez y punto, no queda residente ni activo. Digamos que lo que corresponde a un script, ni más ni menos. La segunda indica la ruta y el script a lanzar. La última parte no la termino de tener muy clara. Parece ser que crea un enlace simbólico al servicio en un subdirectorio (multi-user.target), que supongo que permite que cualquier usuario pueda habilitarlo. Pero no me hagáis mucho caso, porque ya os digo que esta última función no la he entendido del todo. En el intento anterior, dando palos de ciego, utilizaba default.target y en esta ocasión he optado por lo que veis escrito. Ahora funciona y antes no, siento no poder arrojar más luz en el asunto pero hasta aquí llegan mis conocimientos. Activando el nuevo servicio Y, para finalizar, queda habilitar nuestro servicio reiniciar-red para que se ejecute al inicio del sistema: sudo systemctl enable reiniciar-red De este modo, una vez realizado todo lo anterior, he acabado con mi problemilla. Ahora, al iniciarse el servicio NetworkManager, automáticamente se invoca el servicio reiniciar-red, que hace lo que su propio nombre indica (es decir, aquello que le hemos pedido que haga). Este doble inicio permite a mi caprichoso adaptador funcionar correctamente.
Datos archivados del Taringa! original
30puntos
107visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
3visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

j
jjm66🇦🇷
Usuario
Puntos0
Posts1,916
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.