Executer Script au démarrage en tant que Root
Résolu
Plante
-
Bozzo -
Bozzo -
Bonjour,
J'ai déjà fouillé un peu partout dans vos forums et je n'arrive pas à résoudre mon problème.
J'utilise donc Ubuntu et je souhaite que lorsque je démarre la machine, un script se lance qui lui même lance une application (partImage qui va lancer une restauration d'image) demandant d'être loggé en tant que root.
Déjà, sans même essayer de faire démarrer le script au démarrage, je ne parviens pas a l'aide d'un script de démarrer partimage car il demande d'être loggé en tant que root. Avec les commandes sudo -s / su -c je n'y parviens pas.
Auriez-vous une solution ? Ou avez vu déjà rencontré se problème ?
Cordialement,
La Plante
J'ai déjà fouillé un peu partout dans vos forums et je n'arrive pas à résoudre mon problème.
J'utilise donc Ubuntu et je souhaite que lorsque je démarre la machine, un script se lance qui lui même lance une application (partImage qui va lancer une restauration d'image) demandant d'être loggé en tant que root.
Déjà, sans même essayer de faire démarrer le script au démarrage, je ne parviens pas a l'aide d'un script de démarrer partimage car il demande d'être loggé en tant que root. Avec les commandes sudo -s / su -c je n'y parviens pas.
Auriez-vous une solution ? Ou avez vu déjà rencontré se problème ?
Cordialement,
La Plante
A voir également:
- Lancer un script au démarrage ubuntu
- Ordinateur lent au démarrage - Guide
- Rebooter un pc au démarrage - Guide
- Qu'est ce qui se lance au démarrage de l'ordinateur - Guide
- Forcer demarrage pc - Guide
- Lancer une application au démarrage windows 10 - Guide
3 réponses
Salut,
Je ne connais pas PartImage, donc je ne proposerai une solution que pour la premiere partie de la question (lancer une application au demarrage).
Les systemes base sur Debian (dont Ubuntu fait partie), la sequence de demarrage est heritee de System V. Il faut donc pour commencer ecrire un script qui permettra de demarrer et d'arreter le processus et le placer dans /etc/init.d. Par exemple, le fichier /etc/init.d/myPartImage :
Attention: les commentaires en debut de fichiers sont importants ! Ils indiquent le runlevel dans lequel on va arreter/demarrer le service.
L'exemple donne marche pour Debian ; pour Ubuntu le mieux est de regarder un script dans /etc/init.d pour l'equivalent des fonctions log_daemon_msg et log_success_msg.
Puis on rend ce script executable:
Ce script ne sera pas appele au demarrage... pour l'instant ! Pour un runlevel #, il faut un lien symbolique dans le repertoire /etc/rc#.d correspondant qui pointe vers le script que l'on vient d'ecrire. Le nom du lien symbolique indique au process init s'il doit appeler le script avec le parametre start (demarrage du service) ou stop (arret du service), ainsi que l'ordre dans lequel se script doit etre execute. On retrouvera donc dans les repertoires /etc/rc#.d/ des liens symboliques dont le nom est K##myscriptName (resp. S##myscriptName) pour forcer l'arret (resp. le demarrage) du service en position ##.
Heureusement, il y a une commande qui fait tout ca pour nous:
On peut forcer l'ordre de demarrage et d'arret en ajoutant le numero de demarrage et le numero d'arret: update-rc.d myPartImage defaults 30 45
Je ne connais pas PartImage, donc je ne proposerai une solution que pour la premiere partie de la question (lancer une application au demarrage).
Les systemes base sur Debian (dont Ubuntu fait partie), la sequence de demarrage est heritee de System V. Il faut donc pour commencer ecrire un script qui permettra de demarrer et d'arreter le processus et le placer dans /etc/init.d. Par exemple, le fichier /etc/init.d/myPartImage :
#! /bin/sh -e ### BEGIN INIT INFO # Provides: myPartImage # Required-Start: # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Starts PartImage on boot # Description: xxxxxxxxxx ### END INIT INFO . /lib/lsb/init-functions case "$1" in start) log_daemon_msg "Starting PartImage" "PartImage" # inserer du code pour demarrer PartImage log_success_msg ;; stop) log_daemon_msg "Stopping PartImage" "PartImage" # inserer du code pour arreter PartImage log_success_msg ;; restart) $0 stop $0 start ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 ;; esac exit 0
Attention: les commentaires en debut de fichiers sont importants ! Ils indiquent le runlevel dans lequel on va arreter/demarrer le service.
L'exemple donne marche pour Debian ; pour Ubuntu le mieux est de regarder un script dans /etc/init.d pour l'equivalent des fonctions log_daemon_msg et log_success_msg.
Puis on rend ce script executable:
chmod +x myPartImage
Ce script ne sera pas appele au demarrage... pour l'instant ! Pour un runlevel #, il faut un lien symbolique dans le repertoire /etc/rc#.d correspondant qui pointe vers le script que l'on vient d'ecrire. Le nom du lien symbolique indique au process init s'il doit appeler le script avec le parametre start (demarrage du service) ou stop (arret du service), ainsi que l'ordre dans lequel se script doit etre execute. On retrouvera donc dans les repertoires /etc/rc#.d/ des liens symboliques dont le nom est K##myscriptName (resp. S##myscriptName) pour forcer l'arret (resp. le demarrage) du service en position ##.
Heureusement, il y a une commande qui fait tout ca pour nous:
cd /etc/init.d update-rc.d myPartImage defaults
On peut forcer l'ordre de demarrage et d'arret en ajoutant le numero de demarrage et le numero d'arret: update-rc.d myPartImage defaults 30 45