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 21/05/2009, à 11:32

ubuntiny

[Résolu] Un script pour créer un script?

Bonjour à tous!

Avant de commencer, je tiens à préciser que je suis vraiment débutant dans l'écriture de scripts.

C'est bon, on peut y aller wink

Voilà, ayant eu des problèmes considérables pour automatiser le montage automatique de mon disque dur externe, j'ai décidé de créer un petit script pour automatiser tout ça dès le démarrage.

Il m'a suffit de placer ce script dans /etc/init.d/ puis de créer un lien vers /etc/rc2.d/ avec update-rc.d (en ayant changé au préalable les droits d'exécution de ce script)

Le script fonctionne sans problème, et j'en ai créé un deuxième qu'il me suffit de lancer pour automatiser toutes ces démarches.

Mes scripts:

1)

#!/bin/bash
sudo mount /dev/sdg1 /media/LaCie

(très très simple, mais efficace smile)

2)

#!/bin/bash
# Script pour installer automatiquement le script monter_lacie

INIT_D=/etc/init.d/		# Chemin vers le dossier init.d
SCRIPT=monter_lacie		# Variable pour le script à lancer
# Variables nécessaires

sudo cp $SCRIPT $INIT_D		# Copie le script dans le dossier init.d
sudo chmod 755 $INIT_D$SCRIPT	# Ajoute les droits d'exécution au script monter_lacie
sudo update-rc.d $SCRIPT start 99 2 .	# Crée un lien depuis init.d vers r2c.d pour le script

Ma question est la suivante: plutôt que de créer 2 scripts, est-il possible de n'en créer qu'un (le numéro 2) qui va générer automatiquement le script numéro 1 et qui effectuerait toutes les démarches ensuite?

Merci d'avance pour vos réponses et votre attention!

Dernière modification par ubuntiny (Le 21/05/2009, à 16:25)


Si on met dans une cage un lion affamé, un homme affamé et une côtelette, ben c'est jamais la côtelette qui gagne...
Config: Asus X73SV
             nVdia GT530M 1Go
             4Go Ram

Hors ligne

#2 Le 21/05/2009, à 12:50

richardsantoro

Re : [Résolu] Un script pour créer un script?

Je lis et je tente de comprendre.

Tu veux juste intégrer la ligne du premier au deuxieme?


Logiciels incontournables => Terminator : terminal divisible; GNS3 : Simulation de réseau avec IOS Cisco; DIA : Editeur de diagrammes pour réseaux et autres; VirtualBox : Emulateur d'ordinateur

Hors ligne

#3 Le 21/05/2009, à 14:07

ubuntiny

Re : [Résolu] Un script pour créer un script?

Non pas vraiment, je voudrais que le second script génère le premier (parce qu'il faut que ce soit un script à part entière pour pouvoir être déplacé dans le dossier /etc/init.d).

En clair, je voudrais que le second script crée un nouveau script qui contiendrait les lignes du premier avant d'effectuer les manipulations suivantes.


Si on met dans une cage un lion affamé, un homme affamé et une côtelette, ben c'est jamais la côtelette qui gagne...
Config: Asus X73SV
             nVdia GT530M 1Go
             4Go Ram

Hors ligne

#4 Le 21/05/2009, à 15:52

richardsantoro

Re : [Résolu] Un script pour créer un script?

Alors alors.

tu fais ca

sudo touch /destination/nomduscript

qui va créer le script. Ensuite, tu envois le contenu dedans :

echo "le contenu du script" > fichier créer avant

Logiciels incontournables => Terminator : terminal divisible; GNS3 : Simulation de réseau avec IOS Cisco; DIA : Editeur de diagrammes pour réseaux et autres; VirtualBox : Emulateur d'ordinateur

Hors ligne

#5 Le 21/05/2009, à 16:06

Zakhar

Re : [Résolu] Un script pour créer un script?

Je ne comprend pas bien le but de ta recherche !

Bravo pour tes scripts qui ont l'air -presque- impeccables (manque juste le commentaire en entrée pour que update-rc.d ne râle pas).

Mais une fois que as fait le update-rc.d c'est "définitif", c'est à dire que tu n'as plus rien d'autre à faire pour que ton disque soit définitivement monté au démarrage.

Quel est donc l'intérêt de faire un deuxième script qui automatise la mise en place ?

P.S. : tu peux enlever le sudo dans ton script, les scripts de démarrage sont lancés en root.

P.S. 2: en général on fait un montage avec le /etc/fstab au lieu de rajouter un script qui fait un mount !


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#6 Le 21/05/2009, à 16:18

ubuntiny

Re : [Résolu] Un script pour créer un script?

J'ai fait ces scripts parce que, après moultes tentatives infructueuses, j'ai toujours pas réussi à monter automatiquement mon DDE au démarrage (même après toutes les manipulations possibles dans le fstab), du coup j'ai trouvé une solution qui marche!

Et pour répondre a ta question, mon but est de réunir ces 2 scripts en un seul (j'aurai du dire ça dès le début), que je placerai sur une partition de récup' au cas ou j'aurai une réinstall à faire, comme ça pas besoin de tout me retaper...


Si on met dans une cage un lion affamé, un homme affamé et une côtelette, ben c'est jamais la côtelette qui gagne...
Config: Asus X73SV
             nVdia GT530M 1Go
             4Go Ram

Hors ligne

#7 Le 21/05/2009, à 16:23

richardsantoro

Re : [Résolu] Un script pour créer un script?

D'accord, ca nous éclaire. Tel que je l'avais compris (surment comme Zakar), on pensait que tu voulais lancer le script a chaque démarrage.


Logiciels incontournables => Terminator : terminal divisible; GNS3 : Simulation de réseau avec IOS Cisco; DIA : Editeur de diagrammes pour réseaux et autres; VirtualBox : Emulateur d'ordinateur

Hors ligne

#8 Le 21/05/2009, à 16:23

Zakhar

Re : [Résolu] Un script pour créer un script?

Ok... pour pouvoir réinstaller plus facilement !

C'est une excellente idée d'organisation.

Pour le fstab, tu as aussi des outils graphiques qui font ça très bien. On n'a pas trop tendance à les promouvoir vu que tu ne fais qu'une fois, et après ça fait un utilitaire inutile qui encombre ta machine. Mais ça peut aider si tu n'y arrives pas.


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#9 Le 21/05/2009, à 16:24

ubuntiny

Re : [Résolu] Un script pour créer un script?

Ok merci richardsantoro j'avais pas lu ton post, ça fonctionne impeccable!

Merci pour l'astuce du "touch", super utile, je pense que je m'en resservirai!!

EDIT: j'ai déjà essayé un utilitaire du type disk manager mais rien à faire...

EDIT2: Zakhar qu'est-ce que tu voulais dire par "manque juste le commentaire en entrée pour que update-rc.d ne râle pas" ?

Dernière modification par ubuntiny (Le 21/05/2009, à 16:29)


Si on met dans une cage un lion affamé, un homme affamé et une côtelette, ben c'est jamais la côtelette qui gagne...
Config: Asus X73SV
             nVdia GT530M 1Go
             4Go Ram

Hors ligne

#10 Le 21/05/2009, à 16:34

ubuntiny

Re : [Résolu] Un script pour créer un script?

Voilà, ayant effectué les modifications sur mon script, je me retrouve avec ça, dites-moi si c'est bon:

#!/bin/bash
# Script pour installer automatiquement le script monter_lacie

INIT_D=/etc/init.d/		# Chemin vers le dossier init.d
SCRIPT=monter_lacie		# Variable pour le script à lancer
# Variables nécessaires

sudo touch $INIT_D$SCRIPT
echo "#!/bin/bash
# Script pour automatiser le montage du disque dur au démarrage

mount /dev/sdg1 /media/LaCie" > $INIT_D$SCRIPT
#Le script monter_lacie à été créé dans /etc/init.d

sudo chmod 755 $INIT_D$SCRIPT	# Ajoute les droits d'exécution au script monter_lacie
sudo update-rc.d $SCRIPT start 99 2 .	# Crée un lien depuis init.d vers r2c.d pour le script

Si on met dans une cage un lion affamé, un homme affamé et une côtelette, ben c'est jamais la côtelette qui gagne...
Config: Asus X73SV
             nVdia GT530M 1Go
             4Go Ram

Hors ligne

#11 Le 21/05/2009, à 16:35

richardsantoro

Re : [Résolu] Un script pour créer un script?

Ca m'a l'air bon. S'il ne respecte pas tes saut de ligne, tu peux utiliser echo -e et faire des \n

Je pense même que touch n'est pas obligatoire. Le fichier doit etre crée au moment de la redirection du echo s'il n'existe pas. Mais le touch est plus "propre".

Dernière modification par richardsantoro (Le 21/05/2009, à 16:37)


Logiciels incontournables => Terminator : terminal divisible; GNS3 : Simulation de réseau avec IOS Cisco; DIA : Editeur de diagrammes pour réseaux et autres; VirtualBox : Emulateur d'ordinateur

Hors ligne

#12 Le 21/05/2009, à 16:54

ubuntiny

Re : [Résolu] Un script pour créer un script?

Impeccable, j'ai testé mon script en supprimant le script qui se trouvait dans /etc/init.d et en relançant le script final, ça fonctionne, tout revient en place, merci à vous!!

EDIT: Grace à vous, je vais pouvoir monter lacie sans problèmes! lol

Dernière modification par ubuntiny (Le 21/05/2009, à 16:55)


Si on met dans une cage un lion affamé, un homme affamé et une côtelette, ben c'est jamais la côtelette qui gagne...
Config: Asus X73SV
             nVdia GT530M 1Go
             4Go Ram

Hors ligne

#13 Le 22/05/2009, à 15:25

Zakhar

Re : [Résolu] Un script pour créer un script?

Ton script est impeccable, mais lorsque tu vas faire le update-rc.d ça va te dire :

update-rc.d: warning: /etc/init.d/failover missing LSB information

En effet, la "politique Debian" LSB (bonnes pratiques Linux) veut qu'on mette un commentaire formalisé en tête de ce genre script pour expliquer ce qu'il fait.

Il faut donc rajouter

### BEGIN INIT INFO
# Provides:          my-disk-mount
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
### END INIT INFO

En remplaçant par les commentaires pertinents pour le cas de figure qui t'intéresse.

Après ça update-rc.d sera tout content et ne te donnera plus de Warning.

Dernière modification par Zakhar (Le 22/05/2009, à 15:27)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#14 Le 22/05/2009, à 17:37

ubuntiny

Re : [Résolu] Un script pour créer un script?

Ok je prends note, mais ceci dit, le script fonctionne quand même très bien sans ces notes.

Mais merci quand même, tout marche nickel!


Si on met dans une cage un lion affamé, un homme affamé et une côtelette, ben c'est jamais la côtelette qui gagne...
Config: Asus X73SV
             nVdia GT530M 1Go
             4Go Ram

Hors ligne

#15 Le 22/05/2009, à 17:57

kuri

Re : [Résolu] Un script pour créer un script?

desole d arriver en retard mais ...

sudo mount /dev/sdg1 /media/LaCie

une entree dans /etc/fstab serait tellement mieux pour faire ca.

Hors ligne

#16 Le 22/05/2009, à 18:22

Zakhar

Re : [Résolu] Un script pour créer un script?

ubuntiny a écrit :

Ok je prends note, mais ceci dit, le script fonctionne quand même très bien sans ces notes.

Mais merci quand même, tout marche nickel!

Absolument !

Le LSB c'est pour faire "puriste". Dans la mesure où c'est un script pour toi, qui ne sert qu'à toi, tu mets (ou pas) les commentaires que tu veux.

Cette partie de la LSB normalise juste les commentaires à mettre dans un tel script pour qu'il soit "homologué" comme pouvant faire partie d'une version officielle Debian. Et vu que tu ne livreras jamais ton script à Debian dans une telle optique... le commentaire en début de script sert juste à éviter les avertissements affichés par update-rc.d big_smile


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#17 Le 23/05/2009, à 14:45

ubuntiny

Re : [Résolu] Un script pour créer un script?

kuri a écrit :

desole d arriver en retard mais ...

sudo mount /dev/sdg1 /media/LaCie

une entree dans /etc/fstab serait tellement mieux pour faire ca.

Relis mon premier post wink

Si j'en suis arrivé à écrire un script pour ça, c'est que j'avais déja tout essayé dans le fstab...

Mais merci quand même! smile


Si on met dans une cage un lion affamé, un homme affamé et une côtelette, ben c'est jamais la côtelette qui gagne...
Config: Asus X73SV
             nVdia GT530M 1Go
             4Go Ram

Hors ligne