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 07/08/2013, à 08:51

p4nzer

[Résolu] Script création repo svn

Bonjour,

Je suis nouveau sur Linux et j'ai créé mon premier script Bash. C'est un script qui sert à créer un nouveau repo svn, qui le configure correctement (fichiers d'authentification et dossiers Branches, Tags et Trunk), et... C'est tout ^^

J'ai une petite question par rapport à une "réaction" du terminal par rapport à ce script, je vous met une image qui sera beaucoup plus explicite :

Apperçu du Terminal

Je vous met également mon script complet (n'hésitez pas à faire des commentaires dessus sur ce qui est à améliorer :-) )

Apperçu Terminal code

Et enfin mes questions :

Sur l'image 1, le mot de passe root (cadre bleu) correspond à quoi ? Le mot de passe root du Linux ? Un mot de passe root svn ? Je demande cela car peu importe ce que je met, le script fonctionne toujours, il suffit que je mette un bon nom d'utilisateur + mot de passe. Alors je ne comprend pas...

Deuxième question, est il possible de supprimer toute la partie dans le cadre rouge, au moins de la vue de l'utilisateur ? Par exemple, lui demander le nom d'utilisateur et le mot de passe avec un read et les renseigner pendant l'exécution du script sans que l'utilisateur ne s'en aperçoive ?

Voila, j'espère avoir été clair, sinon n'hésitez pas à me redemander :-)

Merci d'avance.

Dernière modification par p4nzer (Le 08/08/2013, à 09:56)

Hors ligne

#2 Le 07/08/2013, à 09:28

pingouinux

Re : [Résolu] Script création repo svn

Bonjour,

Remarque : Pour montrer ce qui apparaît dans le terminal, ou un script, il est préférable de faire un copier-coller du texte et de l'afficher entre balises-codes <>

Deuxième question : D'une manière générale, pour ne pas afficher le résultat d'une commande

commande  >/dev/null     # Pour supprimer la sortie standard (stdout)
commande 2>/dev/null     # Pour supprimer la sortie d'erreur (stderr)

Hors ligne

#3 Le 07/08/2013, à 09:39

p4nzer

Re : [Résolu] Script création repo svn

Bonjour Pingouinux, merci pour ta réponse.

pingouinux a écrit :

Bonjour,

Remarque : Pour montrer ce qui apparaît dans le terminal, ou un script, il est préférable de faire un copier-coller du texte et de l'afficher entre balises-codes <>

C'est ce que je me suis dis... Jusqu'à ce que je me rendre compte que je ne savais pas faire de c / c dans un Terminal... ^^'

pingouinux a écrit :

Deuxième question : D'une manière générale, pour ne pas afficher le résultat d'une commande

commande  >/dev/null     # Pour supprimer la sortie standard (stdout)
commande 2>/dev/null     # Pour supprimer la sortie d'erreur (stderr)

Oui, cela pourrait marcher, mais le problème c'est qu'il faut quand même entrer le nom d'utilisateur et le mot de passe svn pour effectuer le commit, donc comment pourrais-je le placer dans le script sous forme de variable ?

Merci

Hors ligne

#4 Le 07/08/2013, à 09:50

Neosnow

Re : [Résolu] Script création repo svn

Hello,

1ère question : je suis pas un expert de SVN, mais c'est certainement pas le mot de passe 'root' de ta machine qu'il te demande, vu que tu es déjà en 'root'. Ce doit être le mot de passe qui te permet de manager le repo que tu crée (paramètres, gestion des droits, etc...).

Concernant le script en lui-même :
Au lieu de mettre tout ton code dans le if...else, teste seulement si l'utilisateur à entré un paramètre et affecte cette valeur à une variable
Ex. :

if [ -z $1 ]; then
   read -p "blabla repo : " repo
else
   repo = "$1"
fi

...
le_code_pour_creer_le_repo
...

Ainsi, tu évites de devoir modifier ton code 2x et réduit le risque d'erreur (d'ailleurs, en dehors des noms de variables, ton code n'est pas identique dans le if et dans le elseif)

Hors ligne

#5 Le 07/08/2013, à 10:02

p4nzer

Re : [Résolu] Script création repo svn

Bonjour Neosnow, merci pour ta réponse.

Neosnow a écrit :

Hello,

1ère question : je suis pas un expert de SVN, mais c'est certainement pas le mot de passe 'root' de ta machine qu'il te demande, vu que tu es déjà en 'root'. Ce doit être le mot de passe qui te permet de manager le repo que tu crée (paramètres, gestion des droits, etc...).

Hum.. Je n'ai pas la connaissance d'un root sur SVN, uniquement des utilisateurs auxquels tu peux attribuer les droits lecture et écriture via un fichier de conf, c'est pour cela que je ne comprend pas... D Ce qui est vraiment bizarre c'est que je peux mettre nimporte quoi, ou même le laisser vide, le script fonctionne quand même... Il faut juste que Nom d'utilisteur et mot de passe soient bons...

Neosnow a écrit :

Concernant le script en lui-même :
Au lieu de mettre tout ton code dans le if...else, teste seulement si l'utilisateur à entré un paramètre et affecte cette valeur à une variable
Ex. :

if [ -z $1 ]; then
   read -p "blabla repo : " repo
else
   repo = "$1"
fi

...
le_code_pour_creer_le_repo
...

Ainsi, tu évites de devoir modifier ton code 2x et réduit le risque d'erreur (d'ailleurs, en dehors des noms de variables, ton code n'est pas identique dans le if et dans le elseif)

Ok, je vais prendre cette remarque en considération ! :-)

Hors ligne

#6 Le 07/08/2013, à 10:09

pingouinux

Re : [Résolu] Script création repo svn

p4nzer #3 a écrit :

Jusqu'à ce que je me rendre compte que je ne savais pas faire de c / c dans un Terminal...

Copier : Shift+Ctrl+C
Coller :  Shift+Ctrl+V

Hors ligne

#7 Le 07/08/2013, à 10:31

p4nzer

Re : [Résolu] Script création repo svn

pingouinux a écrit :
p4nzer #3 a écrit :

Jusqu'à ce que je me rendre compte que je ne savais pas faire de c / c dans un Terminal...

Copier : Shift+Ctrl+C
Coller :  Shift+Ctrl+V

Pas sur mac malheureusement, de plus je suis sur une VM donc je ne partage pas le presse papier.

Hors ligne

#8 Le 07/08/2013, à 10:40

Neosnow

Re : [Résolu] Script création repo svn

p4nzer a écrit :

Pas sur mac malheureusement, de plus je suis sur une VM donc je ne partage pas le presse papier.

Essaye
Shift + Pomme + C
Shift + Pomme + V

Au pire, tu peux toujours faire un clic-droit dans le terminal, tu auras les options "Copier" et "Coller".

Je ne sais pas quelle sorte de VM tu utilises, mais dans le cas de VirtualBox, si c'est configuré juste, le presse-papier est partagé.

Dernière modification par Neosnow (Le 07/08/2013, à 10:48)

Hors ligne

#9 Le 07/08/2013, à 10:55

p4nzer

Re : [Résolu] Script création repo svn

Neosnow a écrit :
p4nzer a écrit :

Pas sur mac malheureusement, de plus je suis sur une VM donc je ne partage pas le presse papier.

Essaye
Shift + Pomme + C
Shift + Pomme + V

Au pire, tu peux toujours faire un clic-droit dans le terminal, tu auras les options "Copier" et "Coller".

Je ne sais pas quelle sorte de VM tu utilises, mais dans le cas de VirtualBox, si c'est configuré juste, le presse-papier est partagé.

Bien vu l'aveugle ! Clique droit, copier / coller, et voici un tout beau script réajusté selon tes conseils ci-dessus ;-)

#!/bin/bash
# Recuperation et verification des parametres

if [ -z $1 ]
then
# Le nom du repo n'a pas ete renseigne dans les parametres
echo "Vous n'avez pas entre le nom pour le repository que vous voulez creer."
# L'utilisateur nomme le repo
read -p "Entrez le nom du repo que vous voulez creer : " repo
# Le nom du repo a ete renseigne dans les parametres (partie a completer)
elif [ -n $1 ]
then
# On affecte la valeur du parametre a $repo
$repo == $1
fi
# On cree le repo
svnadmin create /var/svn/$repo
# On supprime le fichier d'authentification par défaut et on le remplace par le fichier configure
rm -rf /var/svn/$repo/conf/passwd
cp /var/svn/passwd /var/svn/$repo/conf/passwd
# Pareil pour le fichier de conf
rm -rf /var/svn/$repo/conf/svnserve.conf
cp /var/svn/svnserve.conf /var/svn/$repo/conf/svnserve.conf
# On ajoute les dossier Branches Tags et Trunk
svn mkdir svn://192.168.2.122:3690/$repo/Branches -m "Ajout du dossier Branches" 
svn mkdir svn://192.168.2.122:3690/$repo/Tags -m "Ajout du dossier Tags" 
svn mkdir svn://192.168.2.122:3690/$repo/Trunk -m "Ajout du dossier Trunk"
# On test si tout a bien ete cree
if [ -e /var/svn/$repo ]
then
echo "Le repo $repo a bien ete cree."
else 
echo "Une erreur s'est produite, le repo n'a pas pu etre cree."
fi

Mais revenons à nos moutons...
Quelqu'un aurait une idée de la manière dont je pourrais insérer automatiquement les variables nom d'utilisateur et mot de passe et valider automatiquement quand il les demandent ? (Bien sur, l'utilisateur les auraient renseignées au préalable).

Hors ligne

#10 Le 07/08/2013, à 11:20

p4nzer

Re : [Résolu] Script création repo svn

J'ai peut-être un début de piste, j'ai l'impression qu'il n'aime pas trop que je travaille par URL en fait... Donc il faudrait que je fasse un (lignes 25, 26, 27)

svn mkdir /var/svn/$repo/le_dossier

puis un

svn commit /var/svn/$repo

, mais il me dit

svn: '/var/svn/$repo (remplacé par la valeur de $repo)'

n'est pas une copie de travail... Bizarre...

Dernière modification par p4nzer (Le 07/08/2013, à 11:21)

Hors ligne

#11 Le 07/08/2013, à 11:27

Postmortem

Re : [Résolu] Script création repo svn

Salut,
Regarde ici
Sinon, concernant ton script, les affectations ne se font pas comme ça :

$var == valeur

Mais comme ça :

var=valeur

Donc dans ton cas :

repo=$1

Sinon dans tes tests, protège tes variables avec des guillemets :

if [ -z "$1" ]

Ou alors, utiliser les "doubles crochets" pour tes tests :

if [[ -z $1 ]]

Dans le reste de ton script, utilise les guillemets autour de tes variables, par exemple :

rm -rf "/var/svn/$repo/conf/passwd"

Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#12 Le 08/08/2013, à 09:56

p4nzer

Re : [Résolu] Script création repo svn

Salut Postmortem, merci pour ta réponse ! :-)

Postmortem a écrit :

Salut,
Regarde ici

En fait je viens de régler le soucis, c'était tout simple, il suffisait d'ajouter --username et --password aux différents mkdir, afin qu'il ne le demande pas pour effectuer le commit... Désolé de vous avoir dérangé pour si peu, mais cela m'aura quand même été utile pour améliorer mon script ;-)

Postmortem a écrit :

Sinon, concernant ton script, les affectations ne se font pas comme ça :

$var == valeur

Mais comme ça :

var=valeur

Donc dans ton cas :

repo=$1

Sinon dans tes tests, protège tes variables avec des guillemets :

if [ -z "$1" ]

Ou alors, utiliser les "doubles crochets" pour tes tests :

if [[ -z $1 ]]

Dans le reste de ton script, utilise les guillemets autour de tes variables, par exemple :

rm -rf "/var/svn/$repo/conf/passwd"

J'ai pris ces conseils en considération, merci :-)

Hors ligne