Executer Script au démarrage en tant que Root [Résolu/Fermé]

Signaler
-
 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



3 réponses

Messages postés
119
Date d'inscription
mardi 22 décembre 2009
Statut
Membre
Dernière intervention
11 juillet 2010
22
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 :
#! /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
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 57008 internautes nous ont dit merci ce mois-ci

Merci pour cette réponse !
Mais les différents scripts lancé lors de ce démarrage, c'est comme si ils étaient lancé en tant que root ? Ca m'arrangerai beaucoup :D
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 57008 internautes nous ont dit merci ce mois-ci

Messages postés
119
Date d'inscription
mardi 22 décembre 2009
Statut
Membre
Dernière intervention
11 juillet 2010
22
Oui, le script est lance en tant que root.
Le moteur de sauvegarde CrashPlanEngine ne se lançait pas au démarrage.
Après votre aide si ;-)
Merci,