Lancer treetagger depuis un programme java sous ubunto

Résolu
Lynda12 - 7 janv. 2013 à 11:53
Twinuts Messages postés 5373 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 10 août 2022 - 13 janv. 2013 à 12:31
Bonjour,

Je dois appeler treetagger depuis un programme java sous ubunto. Je sais le faire sous windows, mais mlehuereusement je suis novice en linux.

J'ai tout bêtement procédé par analogie à windows et j'ai rajouté sudo à la commande:
String cmd =" sudo tokenise-fr.pl cv_soumaya.txt | bin\tree-tagger.exe lib\french.par -lemma -token -sgml > resultat-etiquetage.txt"

mais ça ne marche pas, je ne sais pas comment exécuter cette commande en mode super utilisateur

Pourriez vous m'aider s'il vous plait

Merci d'avance

5 réponses

Twinuts Messages postés 5373 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 10 août 2022 110
13 janv. 2013 à 12:31
Salut,

Autre point important, dans ton premiers poste tu sembles utiliser des chemins de fichiers avec comme séparateur un anti slash \ ce qui n'est pas bon.
En java (meme pour windows) favorise l'utilisation des slash tu auras moins de pb.


3eme poste de Julien: Le sudo depuis un soft Java n'est pas vraiment une bonne chose, soit tu exécutes directement ton application avec sudo, soit tu lui donnes le "sticky bit", soit tu exécutes (ça dépend du besoin) ton application via une application qui a les droits root (idéalement un runlevel ; rc.d)

Soit au mieux, si tu as besoin des droits root, tu test l'identifiant(uid/gid) pour voir si celui qui exécute ton soft possède les bon droits et dans le cas contraire tu lui affiches simplement un message. En procédant ainsi tu laisses l'utilisateur choisir la solution de son gout pour exécuter ton soft (sudo n'est pas une commande par défaut sous linux)


-----

"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 369
7 janv. 2013 à 13:46
Salut,

Sous ubuntu, pour exécuter une commande en mode super utilisateur, il faut utiliser la commande sudo.

Pour lancer une commande tu peux utiliser la classe Runtime : http://www.javafr.com/codes/EXEMPLE-UTILISATION-CLASSE-RUNTIME_54094.aspx
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 369
7 janv. 2013 à 13:48
Je n'avais pas fais attention, mais tu vas avoir un soucis : Runtime ne créé pas un shell, elle permet juste de lancer des commande et de récupérer les flux de sortie. Tu ne pourras donc pas accéder aux redirections (donc tu peux dire adieu au pipe)

Pour s'en sortir, créé un fichier .sh qui contient ta commande et exécute avec la classe Runtime le fichier .sh qui sera interprété par l’interpréteur de ton système et qui saura mettre en place les redirections.
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 369
7 janv. 2013 à 13:49
Et une dernière chose : pour lancer ta commande en mode super utilisateur, tu ferais mieux de lancer directement ton java avec les droits de super utilisateur. Ce n'est pas terrible de faire un sudo dans une commande interne, a priori, tu ne connais pas le mot de passe du super utilisateur donc, tu ne peux pas le faire. Il faut que ce soit lui qui lance ton java comme un super user et qui entre son mot de passe à ce moment là.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Merci beaucoup Julien pr ta réponse
0
Rejoignez-nous