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 01/08/2012, à 15:15

R2D2-Ubuntu

Bash et XML

Bonjour,
Je dois installer et configurer une base postgreSQL en déploiement automatique à partir des sources.
Voici le script d'installation :

./configure
sudo make
sudo make install

Puis je créé un utilisateur que je nomme postgres :

sudo adduser postgres
#On entre le mot de passe
sudo mkdir /usr/local/pgsql/data
sudo chown postgres /usr/local/pgsql/data
su -postgres
#On entre le mot de passe
# Et on démarre le serveur
/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data > $HOME/logfile 2>&1 &
# Et on l'arrête
kill 'cat /usr/local/pgsql/data/postmaster.pid'

Ce que j'aurai aimé savoir, c'est s'il était possible de stocker le nom du user (postgres) et son mot de passe dans un fichier xml que je parse afin que mon script puisse récupérer l'information dans le fichier xml (le user) à l'aide de variables. Ceci fait, mon script de déploiement n'aurait pas besoin de demander à l'utilisateur le nom du user et le mot de passe lors de l'installation et tout se ferait automatiquement.

Merci de votre aide

Bien cordialement,

Hors ligne

#2 Le 01/08/2012, à 15:40

Bousky

Re : Bash et XML

Je ne suis pas sûr d'avoir bien compris ce que tu veux faire… Tu parles de quel script ?
Le XML est à mon avis une mauvaise idée : c'est relativement complexe à parser et c'est surtout destiné à décrire des hiérarchies d'objets. Pour ce genre de choses, mieux vaudrait te tourner vers des fichiers CSV (des champs séparés pas des virgules, ou un autre signe de ponctuation) ou TSV (des champs séparés par des tabulations).


Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)

Hors ligne

#3 Le 01/08/2012, à 18:14

nesthib

Re : Bash et XML

sinon tu peux simplement créer un fichier de config :

UTILISATEUR=postgres
MOTDEPASSE=abcd

puis, dans ton script :

source fichier_de_config
echo "l'utilisateur ${UTILISATEUR} a pour mot de passe ${MOTDEPASSE}"

À moins d'avoir une bonne raison d'utiliser du XML, comme le dit Bousky, c'est inutilement casse-pied à utiliser


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#4 Le 02/08/2012, à 00:26

R2D2-Ubuntu

Re : Bash et XML

Merci à vous deux.
En effet c'est casse-pied pour un rien. (sed, awk et tout : amagad !! )

Je vais donc faire comme vous me le préconisez (notamment Nesthib, ta solution me plaît bien.) Bousky, je ne connais rien de ce dont tu me parles, je vais m'informer.

J'ai donc deux questions à présent :

-Je voulais savoir s'il était possible que mon script détecte automatiquement la demande de mot de passe lors du changement de user. Concrètement que celui qui installe l'application n'ait pas à taper le mot de passe après avoir changé d'user. Pareil pour le retour à l'ancien user.

Exemple (je fais court) :

sudo adduser postgres
su - postgres
# La je passe en user postgres mais il me demande le mot de passe. La personne qui installe doit donc le taper. Comment éviter à la personne de taper ce fameux mot de passe ? Comment détecter que le script demande un mot de passe ? Comment remplir le champ automatiquement ?

En attendant vos réponses, voici ce que j'ai fait et ça marche pas trop mal :
Au début du script je fais :

read -p "Entrez un nom d'utilisateur pour la base PostgreSQL (10 caractères maximum) :" -n 10 pguser
read -p "Entrez un mot de passe pour la base PostgreSQL (10 caractères maximum) :" -s -n 10 pgpass

Puis j'appelle plus loin :

su - ${pguser}
#Mais ici je n'arrive pas à détecter la demande de mot de passe et intégrer directement mon ${pgpass} pour que l'utilisateur n'ait rien à faire.

-Je préfère quand même masquer le mot de passe par sécurité. Le stocker en clair comme tu me le recommandes nesthib : j'aime pas trop.

-Quelle est l'extension de ton fichier de conf nesthib ? .sh ?

Je tiens à vous préciser que je bosse avec des scripts sh.

Merci de votre aide, et n'hésitez pas à porter un regard critique sur ce que je fais. Soyez exigent ! Même si je débute wink

Dernière modification par R2D2-Ubuntu (Le 02/08/2012, à 00:27)

Hors ligne

#5 Le 02/08/2012, à 07:36

nesthib

Re : Bash et XML

réponses en vrac :

  • Pas besoin d'extensions de fichier

  • Ce que tu cherches à faire n'est, d'une part, pas très clair mais surtout j'ai l'impression que tu cherches à faire compliqué pour rien.
    Puisque tu installes un programme qui a besoin d'ajouter un nouvel utilisateur, tu as nécessairement les droit root (avec sudo). Il est donc très simple de créer ton utilisateur et changer de compte. Voir ci-dessous.

  • Tu demandes un mot de passe, mais tu ne le vérifies pas. Si l'utilisateur se trompe, c'est fichu

À ta place, je ne chercherais pas à réinventer la roue et j'utiliserais tout bêtement quelque chose du genre :

#!/bin/sh
if [ ! $(id -u) = 0 ]; then 
  echo 'Le script doit être lancé en root'
  exit
fi

pguser=""
while true; do
  if   echo $pguser | grep -q "^[a-z][-a-z0-9_]*\$"; then
    break
  else
    read -p "Entrez un nom d'utilisateur : " pguser
  fi
done

adduser $pguser
su - $pguser

De cette façon tu n'as à t'occuper de (presque) rien. adduser s'occupe de vérifier et créer le mot de passe utilisateur. su étant lancé en root il ne demande pas le mdp utilisateur pour changer de compte.

smile


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#6 Le 02/08/2012, à 09:59

R2D2-Ubuntu

Re : Bash et XML

Mhhhhhhh ....
Okay je comprends bien ce que tu veux dire nesthib.

Ce script est déjà la suite d'un autre script. J'ai en fait un script principal qui lance lui même d'autres scripts. Dont ce script pour postGreSQL.

Le script principal est quant à lui déjà lancé en root. (obligatoirement et je t'avais déjà demandé des conseils mais j'ai amélioré tout ça : http://forum.ubuntu-fr.org/viewtopic.php?id=965561)

Voilà ce que j'utilise finalement :

if [ ! -w /etc/passwd ]; then
    echo "Les droits Super-utilisateur sont requis.  Lancez ce script avec la commande 'sudo'." >&2
    exit 1
fi

Donc je suis déjà sudo lorsque je veux adduser et mot de passe.

Ah et si c'est l'utilisateur qui a rentré une première fois le mot de passe et qu'il est stocké dans une variable, alors impossible de se tromper puisque l'utilisateur ne retape pas son mot de passe. Mais c'est vrai qu'après il a intérêt à s'en souvenir big_smile

Après test, il demande quand même la saisie du mot de passe pour ton script nesthb.

Sinon je voulais savoir s'il était possible d'échapper ça directement après la création de l'user postgres :

Modification des informations relatives à l'utilisateur postgres
Entrez la nouvelle valeur ou « Entrée » pour conserver la valeur proposée
	Nom complet []: 	N° de bureau []: 	Téléphone professionnel []: 	Téléphone personnel []: 	Autre []: Cette information est-elle correcte ? [O/n]

En gros faire 6 entrées consécutivement ou bien il y a une autre technique ?

-Et j'aurais également aimé savoir s'il était possible ensuite de revenir à l'user initial ? En gros je récupère avant de passer à l'user postgres le nom de l'user initial et après avoir fait tout ce qu'il faut avec l'user postgres je change d'user pour l'user initial.

Merci beaucoup

Dernière modification par R2D2-Ubuntu (Le 02/08/2012, à 11:31)

Hors ligne