Procédure Exec de Runtime - Java - Programmation
Marsh Posté le 15-03-2004 à 17:01:40
Smoltok a écrit : Bonjour les zamis ! |
cool
Marsh Posté le 15-03-2004 à 17:02:46
Vous etes trop rapide lesgars ...
la souris a cliqué toute seule sur le bouton entrée
jai du édité rapidement !!
Marsh Posté le 15-03-2004 à 17:03:04
nada ? Qu'est-ce-que tu as comme retour quand tu lances ta commande ldapmodify ?
Marsh Posté le 15-03-2004 à 17:03:49
ben commence déjà par mater ce que ton exception dit au lieu de sortir de ton prog comme un bourin
Marsh Posté le 15-03-2004 à 17:05:18
machinbidule1974 a écrit : nada ? Qu'est-ce-que tu as comme retour quand tu lances ta commande ldapmodify ? |
retour du type
entry cn=.... modified.
j'aimerais aussi utiliser cette fonction ( exec ) pour me générer un mot de passe crypté par la commance /usr/sbin/slappasswd genre slappasswd -h {'MD5'} -s toto
mais là je sèche
Marsh Posté le 15-03-2004 à 17:06:06
ReplyMarsh Posté le 15-03-2004 à 17:06:46
the real moins moins a écrit : ben commence déjà par mater ce que ton exception dit au lieu de sortir de ton prog comme un bourin |
le bourrin bosse dessus depuis toute une journée et en a marre
et l'erreur est du style : ah bah ya pas d'erreur...
d'ou mon incapacité à la nommer...
Marsh Posté le 15-03-2004 à 17:07:51
uriel a écrit : et pourquoi pas le faire par java security ? |
j'y ai pensé mais
mon mot de passe MD5 générér par java.security est incimpatible avec mon attribut userPassword dans mon LDAP ( openLDAP V3 ).
Marsh Posté le 15-03-2004 à 17:08:42
Smoltok a écrit : |
catch (IOException ex) { System.exit(0); }
tu m'etonnes qu'y'a pas d'erreur
ex.printStackTrace();
Marsh Posté le 15-03-2004 à 17:10:06
the real moins moins a écrit : catch (IOException ex) { System.exit(0); } |
oui oui ok ok j'ai tappé rapidement un morceau de code pour le forum MEA CULPA
mais rien ne passe a travers mon try catch pour information
Marsh Posté le 15-03-2004 à 17:11:21
Smoltok a écrit : |
j'ai eu un probleme semblable, mais tu peux adapter pour obtenir la même chose, sans doute un probleme de nombres de caracteres
Marsh Posté le 15-03-2004 à 17:12:16
Est-ce-que ton erreur ne vient pas du fait que la commande ldapmodify n'est pas trouvée ? Si tu essaies de donner le chemin absolu de ta commande ldapmodify, ça donne quoi ?
Marsh Posté le 15-03-2004 à 17:12:43
uriel a écrit : |
pourrais tu expliciter stp ?
Marsh Posté le 15-03-2004 à 17:14:18
machinbidule1974 a écrit : Est-ce-que ton erreur ne vient pas du fait que la commande ldapmodify n'est pas trouvée ? Si tu essaies de donner le chemin absolu de ta commande ldapmodify, ça donne quoi ? |
au début je l'utilisais en relatif mais je me suis posés la question et jai tout mi en absolu apres avoir vu quelques exemples sur le net mais aucun changement
Marsh Posté le 15-03-2004 à 17:16:46
Mais tu n'as vraiment aucune erreur ? C'est dingue ça ! Aucun symptôme qui pourrait nous aiguiller ???
Marsh Posté le 15-03-2004 à 17:16:56
Voilà un exemple plus concret de mon code
String[] params = {"/usr/sbin/slappasswd" , "-h", "'{MD5}'", "-s", "koukou"};
String ls_str;
Process ls_proc = Runtime.getRuntime().exec(params);
DataInputStream ls_in = new DataInputStream(ls_proc.getInputStream());
try
{
while ((ls_str = ls_in.readLine()) != null )
{
NSLog.out.appendln(ls_str);
}
}
catch (Exception e)
{
NSLog.out.appendln(e.toString());
}
Marsh Posté le 15-03-2004 à 17:18:01
machinbidule1974 a écrit : Mais tu n'as vraiment aucune erreur ? C'est dingue ça ! Aucun symptôme qui pourrait nous aiguiller ??? |
oui c dingue ca...il ne me dit rien du tout ..si au moins y avait une erreur de type IO ce serait déjà moins affreux...
ignorance..ignorance...
je dois mal my prendre alors...autre suggestion peut etre ?
Marsh Posté le 15-03-2004 à 17:18:47
ReplyMarsh Posté le 15-03-2004 à 17:19:14
et pour l'InputStream, pq tu passes par un DATAinputStream ?
Marsh Posté le 15-03-2004 à 17:19:44
Mais c'est pas l'OutputStream que tu devrais récupérer plutôt ? C'est bien la sortie de ta commande que tu veux afficher ?
Marsh Posté le 15-03-2004 à 17:20:30
oui en plus, bien vu
pour le return code: http://java.sun.com/j2se/1.4.2/doc [...] xitValue()
Marsh Posté le 15-03-2004 à 17:21:38
the real moins moins a écrit : et le return code? |
au risque de me faire lapider...rien...
donc à mon avis il n'execute pas la commande..pourtant elle est là,
dans le bon chemin absolu...pas d'histoire de droit spécifique...
Marsh Posté le 15-03-2004 à 17:23:09
Il y a qqchose qui m'échappe... Je dois me tromper mais la sortie devrait logiquement être récupérée dans l'OutputStream de ton process (logique au niveau sémantique). Or un OutputStream ne permet de faire que des opérations de type write()...
Marsh Posté le 15-03-2004 à 17:23:26
Smoltok a écrit : |
oula, ca date un peu, mais je crois que j'etais passé par un tableau de bytes
parce que je devais faire une comparaison avec une base de données qui avait été peuplé par un script Perl et le md5 obtenu etait different
Marsh Posté le 15-03-2004 à 17:25:17
machinbidule1974 a écrit : Il y a qqchose qui m'échappe... Je dois me tromper mais la sortie devrait logiquement être récupérée dans l'OutputStream de ton process (logique au niveau sémantique). Or un OutputStream ne permet de faire que des opérations de type write()... |
ha oui, en effet:
http://java.sun.com/j2se/1.4.2/doc [...] utStream()
il a donc raison sur ce coup là
par contre je vois tjs pas pourquoi un DataInputStream
Marsh Posté le 15-03-2004 à 17:29:14
Smoltok a écrit : |
Désolé mais il me fait marrer ce smiley
Marsh Posté le 15-03-2004 à 17:34:13
machinbidule1974 a écrit : |
ca a au moins le mérite de me faire rire
Marsh Posté le 15-03-2004 à 17:41:19
bon voivci un meilleur bout de code dans ce là ( cf post DataInput ) il est vrai que j'utilisais une methode deprecated...
Process ls_proc2 = Runtime.getRuntime().exec(params2);
BufferedReader d = new BufferedReader(new InputStreamReader(ls_proc2.getInputStream()));
try
{
while ((ls_str2 = d.readLine()) != null )
{
NSLog.out.appendln(ls_str2);
}
}
Marsh Posté le 15-03-2004 à 17:56:25
UN petit up pour dire que si je ne met qu 'un argument dans ma fonction celà marche...
genre slappasswd -s koukou
mais jai besoin de pouvoir mettre au moins mon autre argument...
bon affaire a suivre là je rentre chez moi
++
Marsh Posté le 15-03-2004 à 18:08:28
essaie String[] params = {"/usr/sbin/slappasswd" , "-h '{MD5}' -s koukou"};
Marsh Posté le 16-03-2004 à 08:20:44
snif...déjà essayer....
bon je continue mon investigation ! merci à ceux qui ont bien voulu m'aider
et je up le post en même temps !
Marsh Posté le 16-03-2004 à 09:28:13
Je crois avoir trouvé un indice ....
il n'aime pas les ' dans les arguments....
comment faire autrement ?
Marsh Posté le 16-03-2004 à 09:55:07
donc pour résumer enfin si quelqu'un m'écoute encore :
en ligne de commande celà fonctionne :
/bin/ls -a "-F" -s
mais exécuter par la commande exec de runtime celà bug
or j'ai besoin de ces guillemets dans ma commande slappasswd ....
Marsh Posté le 16-03-2004 à 10:38:04
Dicton : "Quand la montagne est trop grande, contourne là !"
En bref, j'ai fait un script qui prend un seul paramètre et plus besoin de spécifier l'argument nécessaire puisqu'inclus dans le script.
Merci à mon administratice système préférée
Marsh Posté le 15-03-2004 à 17:00:39
Bonjour les zamis !
J'utilise le code suivant :
String ls_str;
Process ls_proc = Runtime.getRuntime().exec("/bin/ls -aFl" );
DataInputStream ls_in = new DataInputStream( ls_proc.getInputStream());
try {
while ((ls_str = ls_in.readLine()) != null)
{ System.out.println(ls_str);
}
} catch (IOException e)
{
System.exit(0);
}
Ce code est censé me permettre d 'éxecuter certaines requestes system.
Celà fonctionne avec la commande /bin/ls ( sous unix hein )
mais une commande du stype ldapmodify nada....
une idée ?
Smoltok
Message édité par Smoltok le 15-03-2004 à 17:02:01