Pages : 1
#1 Le 24/03/2010, à 17:55
- indo4ever
[résolu]Bash avec oracle
Bonjour,
je cherche a faire un bash(sous linux). Je veux juste que ce script puisse ajouter un utilisateur dans Oracle. Donc je veux savoir comment je pourrais faire pour que mon script puisse agir sur ma base de données.
Merci d'avance pour vos réponse...
Dernière modification par indo4ever (Le 28/03/2010, à 16:49)
Que la Linuxforce soit avec toi!
Hors ligne
#2 Le 24/03/2010, à 17:56
- sputnick
Re : [résolu]Bash avec oracle
man useradd
man adduser
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#3 Le 24/03/2010, à 17:58
- indo4ever
Re : [résolu]Bash avec oracle
useradd sert a ajouter des utilisateur dans oracle? Je pensais que cela avais un rapport avec les utilisateur de linux????
Que la Linuxforce soit avec toi!
Hors ligne
#4 Le 24/03/2010, à 18:02
- yohann
Re : [résolu]Bash avec oracle
nan mais mdr a part dans le titre il n''y a le mot oracle nul part dans ton message, sois clair dans ta demande si tu veux des réponses claires
j.vachez, le génie du net | Soirées jeux sur Lyon | 441
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.
Hors ligne
#5 Le 24/03/2010, à 18:06
- indo4ever
Re : [résolu]Bash avec oracle
nan mais mdr a part dans le titre il n''y a le mot oracle nul part dans ton message, sois clair dans ta demande si tu veux des réponses claires
Voila j'ai mis à jour ma demande....
Que la Linuxforce soit avec toi!
Hors ligne
#6 Le 24/03/2010, à 18:11
- yohann
Re : [résolu]Bash avec oracle
je ne connais pas oracle, mais la manière usuelle de faire sous unix est de lancer le client oracle et de rediriger la commande sql par un echo vers ce client:
exemple:
echo "insert into user (name, pass ) values ('yohann', md5('mdp')" > oracle -u user -pmdp
en gros on redirige la sortie du echo vers le programe oracle lancé avec les options qui permete de ce connecter, et dans le echo on place la commande qui permet de créer l'utilisateur dans oracle
j.vachez, le génie du net | Soirées jeux sur Lyon | 441
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.
Hors ligne
#7 Le 24/03/2010, à 18:19
- indo4ever
Re : [résolu]Bash avec oracle
merci pour ton aide!
Je comprends pas la fin de la ligne de commande
oracle=oracle
-u la je met le nom de quel utilisateur?
et c quoi pmdp?
Que la Linuxforce soit avec toi!
Hors ligne
#8 Le 24/03/2010, à 18:33
- yohann
Re : [résolu]Bash avec oracle
normal c'est une pseudo ligne de commande!!
je pars du principe que tu sais comment tu te connecte à oracle d'habitude (car je ne sais pas comment on fait).
donc toute la partie à droite du > c'est la commande que tu lance pour te connecter à oracle
j.vachez, le génie du net | Soirées jeux sur Lyon | 441
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.
Hors ligne
#9 Le 25/03/2010, à 10:13
- Totor
Re : [résolu]Bash avec oracle
Bonjour,
si mes souvenirs sont bons :
export ORACLE_SID=<le SID de ta base>
sqlplus /nolog <<EOF
connect / as sysdba
CREATE USER '<USER>' IDENTIFIED BY '<PASSWORD>';
GRANT CONNECT TO '<USER>';
GRANT ...
EOF
Rajoutes tous les droits/rôles que tu souhaites à ton user en complétant GRANT ...
Dernière modification par Totor (Le 25/03/2010, à 13:42)
-- Lucid Lynx --
Hors ligne
#10 Le 25/03/2010, à 20:45
- indo4ever
Re : [résolu]Bash avec oracle
Merci pour ta réponse mais c'est quoi EOF?
Pis toute cette partie je le comprends pas :
sqlplus /nolog <<EOF
connect / as sysdba
Dernière modification par indo4ever (Le 25/03/2010, à 20:55)
Que la Linuxforce soit avec toi!
Hors ligne
#11 Le 25/03/2010, à 21:40
- Totor
Re : [résolu]Bash avec oracle
ça permet de se connecter à Oracle en "sysdba" et de créer le USER oracle avec l'ordre CREATE.
-- Lucid Lynx --
Hors ligne
#12 Le 25/03/2010, à 21:53
- indo4ever
Re : [résolu]Bash avec oracle
script.sh: line 10: warning: here-document at line 5 delimited by end-of-file (wanted `EOF')
script.sh: line 5: sqlplus : commande introuvable
voila ce qu'il me dit?
tu sais pourquoi?
Que la Linuxforce soit avec toi!
Hors ligne
#13 Le 25/03/2010, à 22:10
- Totor
Re : [résolu]Bash avec oracle
script.sh: line 10: warning: here-document at line 5 delimited by end-of-file (wanted `EOF')
le dernier EOF doit se trouver en début de ligne
script.sh: line 5: sqlplus : commande introuvable
voila ce qu'il me dit?
tu sais pourquoi?
il faut que ton ORACLE_HOME/bin (dossier des binaires oracle) soit dans ton PATH
-- Lucid Lynx --
Hors ligne
#14 Le 25/03/2010, à 22:24
- indo4ever
Re : [résolu]Bash avec oracle
J'ai remi le EOF a la fin, je l'avais maintenant il me dit cela:
SQL*Plus: Release 10.2.0.1.0 - Production on Thu Mar 25 22:22:46 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> ERROR:
ORA-01031: insufficient privileges
SQL> SP2-0640: Not connected
J comprends pas, ou est ce que je dois mettre mon mot de passe? et si je ne veux pas executer ma commande via sysdba mais un autre user c possible?
Que la Linuxforce soit avec toi!
Hors ligne
#15 Le 26/03/2010, à 10:04
- Totor
Re : [résolu]Bash avec oracle
Avec la procédure que je t'ai indiqué, pas besoin de mettre de mot de passe.
Pour créer un user oracle, il faut avoir des privilèges, d'où l'utilisateur sys.
Il existe d'autres utilisateurs ayant les privilèges nécessaires mais il faut connaitre leur mot de passe (ex. system)
-- Lucid Lynx --
Hors ligne
#16 Le 26/03/2010, à 13:31
- indo4ever
Re : [résolu]Bash avec oracle
Ok d'accord mais comment on met le mot de passe?
genre c'est system/<mot de passe>?
Je comprends toujours pas ce qu'est ce EOF!
Merci pour ta patience.
Que la Linuxforce soit avec toi!
Hors ligne
#17 Le 26/03/2010, à 13:43
- Totor
Re : [résolu]Bash avec oracle
Document en ligne
Avec ce type de redirection, le shell va lire son entrée standard jusqu'à ce qu'il atteigne une ligne contenant uniquement le mot prévu (sans espaces à la suite), nommée étiquette. Une fois cette étiquette atteinte, il exécutera la commande demandée en lui fournissant en entrée le texte lu avant l'étiquette, que l'on appelle document en ligne.
Le format des documents en ligne est le suivant :
<<[-]mot
document en ligne
étiquetteIl n'y a ni remplacement de paramètre, ni substitution de commande, ni développement de chemin d'accès, ni évaluation arithmétique sur le mot. Si l'un des caractères du mot est protégé, l' étiquette est obtenue après suppression des protections dans le mot, et les lignes du document ne sont pas développées. Sinon, toutes les lignes du document sont soumises au remplacement des paramètres, à la substitution de commandes, et à l'évaluation arithmétique. Dans ce dernier cas, les couples \<retour-chariot> sont ignorés, et \ doit être utilisé pour protéger les caractères \, $, et `.
Si l'opérateur de redirection est <<-, alors les tabulations en tête de chaque ligne sont supprimées, y compris dans la ligne contenant étiquette. Ceci permet d'indenter de manière naturelle les documents en ligne au sein des scripts.
-- Lucid Lynx --
Hors ligne
#18 Le 26/03/2010, à 18:48
- indo4ever
Re : [résolu]Bash avec oracle
cela m'aide pas
Que la Linuxforce soit avec toi!
Hors ligne
#19 Le 26/03/2010, à 19:46
- Link31
Re : [résolu]Bash avec oracle
Ok d'accord mais comment on met le mot de passe?
genre c'est system/<mot de passe>?
Essaie ça :
sqlplus / as sysdba <<EOF
CREATE USER '<USER>' IDENTIFIED BY '<PASSWORD>';
GRANT CONNECT TO '<USER>';
GRANT ...
EOF
Et si tu veux te connecter sous une autre identité, par exemple system, tu dois mettre le mot de passe :
sqlplus system/lemotdepasse <<EOF
...
Dernière modification par Link31 (Le 26/03/2010, à 19:48)
Hors ligne
#20 Le 26/03/2010, à 20:00
- indo4ever
Re : [résolu]Bash avec oracle
merci pour ton aide:
Maintenant j'ai cela
SQL> SQL> SQL> CREATE USER 'test' IDENTIFIED BY 'test'
*
ERROR at line 1:
ORA-01935: missing user or role name
pourquoi? merci d'avance
Que la Linuxforce soit avec toi!
Hors ligne
#21 Le 26/03/2010, à 20:38
- Link31
Re : [résolu]Bash avec oracle
Qu'est ce que tu as écrit exactement (sans nous donner le mdp évidemment) ?
Tu n'as pas gardé le "GRANT ..." tel quel j'espère ?
Hors ligne
#22 Le 26/03/2010, à 21:21
- Totor
Re : [résolu]Bash avec oracle
Ceci devrait suffir :
sqlplus system/<passwd>@<SID> <<EOF
CREATE USER test IDENIFIED BY test;
GRANT CONNECT, RESSOURCE TO test;
EOF
N'oublie pas de changer le password et le SID
sinon :
sqlplus 'sys/<passwd>@<SID> as sysdba' <<EOF
CREATE USER test IDENIFIED BY test;
GRANT CONNECT, RESSOURCE TO test;
EOF
je ne te donne pas les mots de passe par défaut. s'ils sont probablement dispo sur le net...
EDIT : et quand t'as une erreur oracle, (du style ORA-01935)... regarde la page http://<ERREUR>.ora-code.com
exemple : http://ora-01935.ora-code.com/
Dernière modification par Totor (Le 26/03/2010, à 21:26)
-- Lucid Lynx --
Hors ligne
#23 Le 26/03/2010, à 21:27
- indo4ever
Re : [résolu]Bash avec oracle
export ORACLE_SID=XE
sqlplus system/<mdp> <<EOF
CREATE USER 'test' IDENTIFIED BY 'test';
GRANT CONNECT, RESSOURCE TO test;
EOF
Voila ce que j'ai mis...Pourtant il se connecte...
Que la Linuxforce soit avec toi!
Hors ligne
#24 Le 27/03/2010, à 21:50
- Totor
Re : [résolu]Bash avec oracle
Si tu positionnes la variable ORACLE_SID, y'a effectivement pas besoin de l'indiquer dans la commande sqlplus
-- Lucid Lynx --
Hors ligne
#25 Le 28/03/2010, à 16:49
- indo4ever
Re : [résolu]Bash avec oracle
j'ai trouvé en faite il faut juste enlevé les quotte. Merci pour ton aide
Que la Linuxforce soit avec toi!
Hors ligne