Pages : 1
#1 Le 29/03/2010, à 18:17
- indo4ever
[résolu]Aide pour un bash
Bonjour,
J'ai créer un bash, mais il y a plein d'erreur et j'arrive pas a savoir pourquoi. Le script bug au a la première boucle.
#!/bin/bash
# bash pour ajouter un utilisateur sur oracle
echo bonjour
echo bienvenue dans ce script d\'aide à la création d\utilisateur d\oracle
read -p 'merci de vous identifier, quel est votre nom ? : ' nom #demande d'identification
read -p ' entrez votre mot de passe: ' -s mdp
echo "bonjour $nom "
read -p 'voulez créer un nouveau utilisateur?(oui/non) ' -n 3 question
while [ $question != "non" ] do # début de la boucle qui demande la création ou non d'un nouvelle utilisateur. Continue a boucler tant que l'utilisateur dis oui
echo -p ' quel est le nom de votre nouvelle utilisateur? :' name
echo -p ' Quel sera sont mot de passe? :' mdpp
# se connecte a oracle pour ajouter un nouvelle utilisateur.
sqlplus $nom/$mdp@XE as sysdba <<EOF
CREATE $name IDENTIFIED BY $mdpp;
GRANT CREATE SESSION to $name;
EOF
echo -p 'voulez vous lui donner tous les droits?(oui/non):'reponse
if [ $reponse = 'oui' ] # demande d'attribution de tous les droits.
then
sqlplus $nom/$mdp@XE as sysdba <<EOF
GRANT ALL PRIVILEGES to $name
EOF
else
echo -p 'voulez vous ajouter un droit (oui/non):" reponse2
while [ $reponse2 = oui ] do # Boucle d'attribution de droit au cas par cas.
echo -p 'quel est le privilège que vous voulez accorder?' $privi
echo -p 'Sur quel table ce privilège doit-il être accordé?' $table
sqlplus $nom/$mdp@XE as sysdba <<EOF
GRANT $privi on $table TO $name
EOF
done
fi
read -p 'voulez créer un autre utilisateur?(oui/non)' : -n 3 question
done
# fin de la boucle et fin du script
Dernière modification par indo4ever (Le 31/03/2010, à 07:49)
Que la Linuxforce soit avec toi!
Hors ligne
#2 Le 29/03/2010, à 18:49
- AnsuzPeorth
Re : [résolu]Aide pour un bash
Bjr,
Tu as oublié le point-virgule avant le do (si tu ne veux pas les mettre sur 2 lignes)
http://abs.traduc.org/abs-5.3-fr/ch10.html#loops1
Dernière modification par AnsuzPeorth (Le 29/03/2010, à 18:50)
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#3 Le 29/03/2010, à 19:00
- indo4ever
Re : [résolu]Aide pour un bash
Voila c'est modifié.
Voici l'erreur:
» : identifiant non valablescript.sh: line 8: read: « mdp
bonjour sys
» : identifiant non valableisateur?(oui/non) ouiscript.sh: line 10: read: «
: commande introuvable
script.sh: line 45: Erreur de syntaxe : fin de fichier prématurée
Que la Linuxforce soit avec toi!
Hors ligne
#4 Le 29/03/2010, à 19:11
- AnsuzPeorth
Re : [résolu]Aide pour un bash
Et ben merde alors ..... Pas besoin de point-virgule (arfff les habitudes et les fausses idées...!)
J'ai essayer ton script, il fonctionne presque, tu utilises un editeur avec coloration syntaxique, car l'erreur saute au yeux grace à ça !
echo -p 'voulez vous ajouter un droit (oui/non):" reponse2
while [ $reponse2 = oui ] do # Boucle d'attribution de droit au cas par cas.
Tu ouvres le echo avec ' et tu ferme avec "
ps: doit avoir une erreur ailleurs, je regarderais ça après mangé, si personne ne t'as répondu entre temps, sans promettre le succès non plus
ps2:euh, sisi, finalement il faut le point-virgule
ps3: y'a pas confusion entre read et echo ???
ps4: tinn, qd j'ai faim je vois pas clair
Dernière modification par AnsuzPeorth (Le 29/03/2010, à 19:26)
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#5 Le 29/03/2010, à 19:31
- indo4ever
Re : [résolu]Aide pour un bash
Bonjour merci pour ton aide!
OUi tu as raison j'ai confondu! Avec la correction cela donne:
#!/bin/bash
# bash pour ajouter un utilisateur sur oracle
echo bonjour
echo bienvenue dans ce script d\'aide à la création d\utilisateur d\oracle
echo 'merci de vous identifier, quel est votre nom ? :'
read nom #demande d'identification
echo 'entrez votre mot de passe: '
read -s mdp
echo 'voulez créer un nouveau utilisateur?(oui/non) '
read question
echo $question
while [ $question == "oui" ]; do # début de la boucle qui demande la création ou non d'un nouvelle utilisateur. Continue a boucler tant que l'utilisateur dis oui
echo ' quel est le nom de votre nouvelle utilisateur? :'
read name
read -p ' Quel sera sont mot de passe? :' mdpp
# se connecte a oracle pour ajouter un nouvelle utilisateur.
sqlplus $nom/$mdp@XE as sysdba <<EOF
CREATE 'test' IDENTIFIED BY '$mdpp';
GRANT CREATE SESSION to '$name;
EOF
read -p 'voulez vous lui donner tous les droits?(oui/non):'reponse
if [ $reponse = 'oui' ] # demande d'attribution de tous les droits.
then
sqlplus $nom/$mdp@XE as sysdba <<EOF
GRANT ALL PRIVILEGES to $name
EOF
else
read -p "voulez vous ajouter un droit (oui/non):" reponse2
while [ $reponse2 = oui ]; do # Boucle d'attribution de droit au cas par cas.
echo -p 'quel est le privilège que vous voulez accorder?' $privi
echo -p 'Sur quel table ce privilège doit-il être accordé?' $table
sqlplus $nom/$mdp@XE as sysdba <<EOF
GRANT $privi on $table TO $name
EOF
done
fi
read -p 'voulez créer un autre utilisateur?(oui/non)' : -n 3 question
done
# fin de la boucle et fin du script
Et cela a pour erreur:
voulez cr�er un nouveau utilisateur?(oui/non)
oui
oui
: commande introuvable
script.sh: line 51: Erreur de syntaxe : fin de fichier prématurée
Dernière modification par indo4ever (Le 29/03/2010, à 20:04)
Que la Linuxforce soit avec toi!
Hors ligne
#6 Le 29/03/2010, à 22:11
- twocats
Re : [résolu]Aide pour un bash
Et comme ça ?
#!/bin/bash
# bash pour ajouter un utilisateur sur oracle
echo bonjour
echo "bienvenue dans ce script d'aide à la création d'utilisateur d'oracle"
echo "merci de vous identifier, quel est votre nom ? :"
read nom #demande d'identification
echo "entrez votre mot de passe: "
read -s mdp
echo "voulez créer un nouveau utilisateur?(oui/non) "
read question
echo $question
while [ $question = oui ] # début de la boucle qui demande la création ou non d'un nouvelle utilisateur. Continue a boucler tant que l'utilisateur dis oui
do
echo " quel est le nom de votre nouvelle utilisateur? :"
read name
read -p " Quel sera sont mot de passe? :" mdpp
# se connecte a oracle pour ajouter un nouvelle utilisateur.
sqlplus $nom/$mdp@XE as sysdba <<EOF
CREATE 'test' IDENTIFIED BY '$mdpp';
GRANT CREATE SESSION to '$name';
EOF
read -p "voulez vous lui donner tous les droits?(oui/non):" reponse
if [ $reponse = oui ] # demande d'attribution de tous les droits.
then
sqlplus $nom/$mdp@XE as sysdba <<EOF
GRANT ALL PRIVILEGES to $name
EOF
else
read -p "voulez vous ajouter un droit (oui/non):" reponse2
while [ $reponse2 = oui ] # Boucle d'attribution de droit au cas par cas.
do
echo -p "quel est le privilège que vous voulez accorder?" $privi
echo -p "Sur quel table ce privilège doit-il être accordé?" $table
sqlplus $nom/$mdp@XE as sysdba <<EOF
GRANT $privi on $table TO $name
EOF
done
fi
read -p "voulez créer un autre utilisateur?(oui/non)" : -n 3 question
done
# fin de la boucle et fin du script
Et INDENTES ton code !
La réponse est 42
Hors ligne
#7 Le 30/03/2010, à 08:37
- Hizoka
Re : [résolu]Aide pour un bash
echo -p "Sur quel table ce privilège doit-il être accordé?" $table
c'est read -p pas echo -p... et à la fin y a pas de $
read -p "Sur quel table ce privilège doit-il être accordé?" table
et c'est valable pour les autres erreurs identiques.
Pourquoi utilises-tu un coup echo + read et un coup read -p ?
fais gaffe dans la création de ton code, un coup tu utilises " et d'autres fois ' alors que dans les 2 cas c'est pour encadrer "oui". Des echo sont encadrés d'autres non...
comme le dit twocats, indente ton texte, quand tu utilises une variable utilise : "${variable}", ça évite certains problèmes.
Utilise les doubles crochet dans tes if, je ne me rappelles plus vraiment les différences mais c'est plus souples (permet de ne pas utiliser de guillemet entre les crochets + d'autres trucs)
Pour le do, le plus simple c'est de le mettre à la ligne donc plus besoin de se poser la question du ;
N'hésite pas à bien détailler les actions de ton script, utilise des variables compréhensives et logiques
Gaffe aux = et == , ce n'est pas la même chose.
Plus ton code sera lisible, plus les erreurs sauteront aux yeux, et utilise comme le conseil AnsuzPeorth un editeur avec coloration syntaxique.
#!/bin/bash
# bash pour ajouter un utilisateur sur oracle
echo -e "bonjour et
bienvenue dans ce script d'aide à la création d'utilisateur d'oracle."
# Demande du nom
read -p 'merci de vous identifier, entrez votre nom : ' nom
# Demande du mdp
read -s -p 'entrez votre mot de passe : ' mdp
# Demande de création de nouvel utilisateur
read -p 'voulez créer un nouveau utilisateur ? (oui/non) : ' question
# Verfication/affichage du choix - Pourquoi uniquement pour cette question ?
echo $question
# début de la boucle qui demande la création ou non d'un nouvelle utilisateur. Continue a boucler tant que l'utilisateur dis oui
# Vrai si la réponse commence par o ou O
while [[ ${question} == [Oo]* ]]
do
# Demande du nom du nouvel utilisateur
read -p 'entrez le nom du nouvel utilisateur : ' name
# Demande du mdp du nouvel utilisateur
read -p ' Quel sera son mot de passe? :' mdpp
# se connecte a oracle pour ajouter un nouvelle utilisateur.
sqlplus $nom/$mdp@XE as sysdba <<EOF
CREATE 'test' IDENTIFIED BY '$mdpp';
GRANT CREATE SESSION to '$name;
EOF
# demande d'attribution de tous les droits.
read -p 'voulez vous lui donner tous les droits ? (oui/non) : ' reponse
# Vrai si la réponse commence par o ou O
if [[ ${reponse} == [Oo]* ]]
then
sqlplus $nom/$mdp@XE as sysdba <<EOF
GRANT ALL PRIVILEGES to $name
EOF
else
# Demande d'ajout de droit au cas par cas.
read -p "voulez vous ajouter un droit (oui/non) : " reponse2
# Boucle d'attribution de droit au cas par cas.
# Comment tu en sors ?
while [[ ${reponse2} == [Oo]*' ]]
do
# Choix du privilége
read -p 'quel est le privilège que vous voulez accorder ? ' privi
# Choix de la table
read -p 'Sur quel table ce privilège doit-il être accordé ? ' table
# Utilisation de sqlplus
sqlplus $nom/$mdp@XE as sysdba <<EOF
GRANT $privi on $table TO $name
EOF
done
fi
# Question permettant de créer un autre utilisateur ou de sortir de la boucle
read -p 'voulez créer un autre utilisateur ? (oui/non) : ' -n 3 question
done
Voila ton code en plus propre, après je ne l'ai pas tester mais c'et déjà plus lisible.
Dernière modification par Hizoka (Le 30/03/2010, à 08:54)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#8 Le 31/03/2010, à 07:48
- indo4ever
Re : [résolu]Aide pour un bash
Merci pour votre aide précieuse cela marche enfin ! J'ai fait encore quelque modification est c'est bon il marche! Merci a tous pour votre aide
Que la Linuxforce soit avec toi!
Hors ligne