Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 25/09/2005, à 16:16

LR

[Résolu] Lancer un script à la fermeture

Salut,

J'aimerais créer un script pour faire un backup de mon dossier /etc sur une partition dédiée à chaque fois que j'éteins ma machine.

Le problème c'est que je n'ai jamais réalisé ce genre de script et que je ne sais pas où le mettre pour qu'il se lance automatiquement.

Quelqu'un pourrait m'orienter ?

Merci d'avance
Lilian

Dernière modification par LR (Le 28/09/2005, à 21:59)

Hors ligne

#2 Le 25/09/2005, à 17:01

reboot62

Re : [Résolu] Lancer un script à la fermeture

tongue ouais, c'est bien pratique cette manip
perso, je fais ça pour mon forum perso cool
je fais un 'dump' de ma base Mysql et je la copie avec lftp sur un serveur distant !
j'utilise cron, le truc c'est d'ajouter ton script dans la crontab "/etc/crontab"
pour les détails, regardes un peu dans la doc de cron... tongue

Hors ligne

#3 Le 25/09/2005, à 19:55

sksbir

Re : [Résolu] Lancer un script à la fermeture

désolé, mais utiliser le cron pour ça n'est pas la bonne méthode.

voici quelques idées pour te donner des pistes de départ:

- déterminer quelles sont les commandes à exécuter lors de l'arrêt de ta machine.
- créer un fichier dans /etc/init.d . Par exemple : /etc/init.d/persoCMD qui contiendra tes commandes . Ce fichier devra etre exécutable (voir chmod ), et devra contenir une structure pour accepter les ordres "start" et "stop" ( je te conseille de t'inspirer des autres scripts présents dans /etc/init.d )
- Utiliser la commande update-rc.d pour inclure ton script dans les scripts qui vont etre exécuté par ta machine lors d'un changement de level.

Hors ligne

#4 Le 25/09/2005, à 20:13

jAr0d

Re : [Résolu] Lancer un script à la fermeture

Alors, voici un petit rappel concernant le démarrage / extinction d'une ubuntu :

Dans /etc, tu trouvereras une série de répertoires rc*.d dans lesquels se trouvent des liens symboliques vers des scripts qui sont présents dans le répertoire /etc/init.d

En fonction du niveau d'exécution, c'est à dire si t'a machine est en reboot, arret ou démarrage, les scripts présents dans le répertoire rc*.d et dont le lien commence par S****** seront exécutés dans l'ordre croissant de leurs noms.

Voici les différents niveaux d'exécutions :

0 -> concerne l'arrêt de la machine
1 -> démarrage en mode mono-utilisateur
2-5 -> modes multi-utilisateurs
6 -> redémarrage.

Dans ton cas par exemple, c'est le niveau 0 qui nous interresse. En effet tous les scripts pointés par les liens présents dans le répertoire /etc/rc0.d/S*** seront exécutés à l'extinction de ta machine, plus précisement appelés avec comme argument start

Ainsi, si tu créés un script de backup, que l'on nommera par exemple backup_home.sh, il faudra qu'il s'execute sur passage d'un argument start, alors tu le placeras dans /etc/init.d et tu devras créer un lien vers ce dernier dans le répertoire /etc/rc0.d

Par exemple :

ln -s /etc/init.d/backup_home.sh /etc/rc0.d/S37backup_home

Ainsi, à chaque extinction de ton système, ce script sera exécuté. Cependant, il faut que tu fasses attention à la manière de coder ton script, qui est très importante, notamment en ce qui concerne les valeurs de retour une fois ce script terminé, afin que la main soit correctement rendu au système pour qu'il puisse finir son extinction.

Encore une chose, si j'ai choisi S37**** c'est que ton script doit être exécuter avant celui qui démonte les différents systèmes de fichier... sinon le backup sera difficile wink

Voilà, j'espère avoir été clair, et surtout ne pas avoir dit trop de bêtises. Si tu as des problèmes pour écrire le script, continu de poster ici, on essaira de voir ça ensemble.

Yann.

Dernière modification par jAr0d (Le 25/09/2005, à 20:16)


Kubuntu 7.10
Toshiba Satellite A100-788
Linux, plus qu'un OS, une passion...

Hors ligne

#5 Le 25/09/2005, à 20:36

LR

Re : [Résolu] Lancer un script à la fermeture

C'est parfait, c'est à la méthode de jAr0d à laquelle j'avais pensé mais je n'étais pas assez sur de moi.

Très bien, maintenant je sais comment lancer mon script au bon moment, je n'ai plus qu'à étudier les autres scripts pour voir comment coder le mien. C'est pas gagné tongue

Merci pour votre aide, je viendrai poster ma solution ici

Hors ligne

#6 Le 25/09/2005, à 22:33

jAr0d

Re : [Résolu] Lancer un script à la fermeture

Aucun problème smile

On est tous impatient de voir ça wink

Bonne soirée.

Yann.


Kubuntu 7.10
Toshiba Satellite A100-788
Linux, plus qu'un OS, une passion...

Hors ligne

#7 Le 28/09/2005, à 21:58

LR

Re : [Résolu] Lancer un script à la fermeture

C'est fait, comme jarod l'a proposé. Voici mon fichier backup_etc.sh (j'ai copié samba et j'ai pas enlevé les commentaires, désolé) :

#!/bin/sh
#
# Script de Lilian.
# Backup du dossier de configuration /etc.
# 
# 1. Monte /dev/md1 /mnt/etc_backup
# 2. Efface tout le contenu de /mnt/etc_backup
# 3. Copie /etc sur /mnt/etc_backup
# 4. Démonte /dev/md1
#

. /lib/lsb/init-functions

case "$1" in
	stop)
               log_begin_msg "Sauvegarde de /etc sur /dev/md1..."

#               if ! start-stop-daemon --start --quiet --exec /usr/sbin/nmbd -- -D; then
#                       log_end_msg 1
#                       exit 1
#               fi

#		if [ "$RUN_MODE" != "inetd" ]; then
#                       if ! start-stop-daemon --start --quiet --exec /usr/sbin/smbd -- -D; then
#                               log_end_msg 1
#                               exit 1
#                       fi
#		fi

		#1. Monter /dev/md1 /mnt/etc_backup
		mount /dev/md1 /mnt/etc_backup

		#2. Effacer tout le contenu de /mnt/etc_backup
		rm -rf /mnt/etc_backup/*

		#3. Copier le /etc sur /mnt/etc_backup
		cp -Pr /etc /mnt/etc_backup

		#4. Démonter /dev/md1
		umount /dev/md1

               log_end_msg 0
		;;
	start)
#               log_begin_msg "Stopping Samba daemons..."

#		start-stop-daemon --stop --quiet --pidfile $NMBDPID
		# Wait a little and remove stale PID file
#		sleep 1
#		if [ -f $NMBDPID ] && ! ps h `cat $NMBDPID` > /dev/null
#		then
			# Stale PID file (nmbd was succesfully stopped),
			# remove it (should be removed by nmbd itself IMHO.)
#			rm -f $NMBDPID
#		fi

#		if [ "$RUN_MODE" != "inetd" ]; then
#			start-stop-daemon --stop --quiet --pidfile $SMBDPID
#			# Wait a little and remove stale PID file
#			sleep 1
#			if [ -f $SMBDPID ] && ! ps h `cat $SMBDPID` > /dev/null
#			then
#				# Stale PID file (nmbd was succesfully stopped),
#				# remove it (should be removed by smbd itself IMHO.)
#				rm -f $SMBDPID
#			fi
#		fi

#              log_end_msg 0

		;;
#	reload)
#               log_begin_msg "Reloading /etc/samba/smb.conf (smbd only)..."

#		start-stop-daemon --stop --signal HUP --pidfile $SMBDPID

#               log_end_msg 0
#		;;
#	restart|force-reload)
#		$0 stop
#		sleep 1
#		$0 start
#		;;
#	*)
#               log_success_msg "Usage: /etc/init.d/samba {start|stop|reload|restart|force-reload}"
#		exit 1
#		;;
esac

exit 0

Merci pour votre aide

Dernière modification par LR (Le 01/10/2005, à 09:18)

Hors ligne

#8 Le 28/09/2005, à 22:30

jAr0d

Re : [Résolu] Lancer un script à la fermeture

Pas mal smile


Kubuntu 7.10
Toshiba Satellite A100-788
Linux, plus qu'un OS, une passion...

Hors ligne

#9 Le 28/09/2005, à 22:45

LR

Re : [Résolu] Lancer un script à la fermeture

Merci wink

Bon, c'est mon premier script et déjà qu'il marche, je suis assez content. Mais je ne fais pas de récupération d'erreur ni rien alors si quelqu'un souhaite y apporter des amélioration cool

Hors ligne

#10 Le 01/10/2005, à 09:17

LR

Re : [Résolu] Lancer un script à la fermeture

Correction :
En fait ce script s'exécute à chaque démarrage et à chaque fermeture. Si je veux que le backup se fasse lors de l'arrêt, c'est dans "stop" qu'il faut mettre le code. J'ai modifié mon message en conséquence.

Hors ligne