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 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 wink
ps2:euh, sisi, finalement il faut le point-virgule smile
ps3: y'a pas confusion entre read et echo ???
ps4: tinn, qd j'ai faim je vois pas clair smile

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 big_smile! J'ai fait encore quelque modification est c'est bon il marche! Merci a tous pour votre aide big_smile


Que la Linuxforce soit avec toi!

Hors ligne