Appel de commande shell unix en java - Java - Programmation
Marsh Posté le 23-03-2006 à 16:17:20
obut76 a écrit : Salut a tous, |
.
Tu peux regarder la doc pour la classe Runtime et l'utilisation de la fonction exec.
Marsh Posté le 23-03-2006 à 16:23:37
C'est ce que je viensd de faire, merci par contre avec le code suivant:
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws Exception {
// TODO code application logic here
System.out.println("Appel de commandes UNIX en java" );
/*Déclaration des variables*/
String [] tab_commandes = new String[2];
int cpt_tab=0;
/*Initialisations du tableau des commandes*/
tab_commandes[0]="/bin/ls";
tab_commandes[1]="/home/obut76";
System.out.println("Contenu du tableau des commandes:" );
while (cpt_tab < tab_commandes.length)
{
System.out.println("Col. "+ cpt_tab + " -> " + tab_commandes[cpt_tab]);
cpt_tab++;
}
Process processus=Runtime.getRuntime().exec(tab_commandes);
System.out.println("Processus: " + processus);
System.out.println("processus.getOutputStream(): " + processus.getOutputStream());
System.out.println("Fin de l'appel de commandes UNIX en java" );
}
}
Je m'attendais en plus de mes println de bases a avoir un résultat sur la sortie standard...me trompes je?
Aprés je me remets à mes révisions...lol
Marsh Posté le 23-03-2006 à 16:33:54
Si tu veux récupérer la sortie standard de ton process, c'est processus.getInputStream() qu'il faut utiliser (Cf. javadoc de Process).
Marsh Posté le 23-03-2006 à 16:44:59
obut76 a écrit : merci je vais voir |
Et de plus, faire un println, que ce soit sur un Input ou un OutputStream, ca te retourne l'adresse de la variable dans la JVM et pas son contenu.
Marsh Posté le 23-03-2006 à 17:15:39
faire appel à des commandes de l'OS enlève à JAVA sa puissance de portabilité. A vrai dire, il n'a pas été conçu pour ce genre de chose, bien qu'il le permet quand même. Donc à utiliser avec des pincettes.
Marsh Posté le 23-03-2006 à 17:37:07
moi23372 a écrit : faire appel à des commandes de l'OS enlève à JAVA sa puissance de portabilité. A vrai dire, il n'a pas été conçu pour ce genre de chose, bien qu'il le permet quand même. Donc à utiliser avec des pincettes. |
Tout à fait. Toutefois si c'est pour une utilisation des commandes de base Unix, la portabilité sera juste perdue pour windows. Encore qu'il vaut mieux faire gaffe aux options qui sont pas forcément les mêmes d'un Unix à l'autre.
Marsh Posté le 24-03-2006 à 12:16:25
Au fait quel est le but de ton programme ?
Si ce que tu veux faire, c'est voir comment on peut executer des commandes du système alors j'ai rien à dire.
Par contre si ton but est de lister les fichiers d'un répertoire alors il y a un moyen de faire ça autrement.
Cf. la classe java.io.File qui contient tout ce qu'il faut.
En particulier la méthode list() qui retourne la liste des fichiers et répertoires
Marsh Posté le 20-10-2006 à 17:45:01
Moi j'ai un petit problème je voudrais faire la même chose mais sous windows; en gros je voudrais lancer la commande "cls" pour nétoyer la console mais je ne vois pas comment faire Tout ce que je trouve ne marche pas, quelqu'un aurait une idée svp?
Marsh Posté le 21-10-2006 à 00:13:10
Pour connaitre le nom de l'OS, la commande System.getProperty("os.name" ) retourne le nom du système d'exploitation. Les OS Windows commencent toujours par "Windows".
Ensuite, il faut utiliser rundll32
http://www.javaworld.com/javaworld [...] tip66.html
Marsh Posté le 17-08-2009 à 17:16:31
Je suis totalement débutant en java mais j'ai hérité d'une application en java dans laquelle je dois faire un appel à une commande Unix du style 'ps -ef'.
L'application tourne sous IE et la machine est sous unix.
J'ai lu tous les posts mais serait-il possible d'avoir un bout de code pour éclaircir la réponse s'il vous plait car je ne vois pas comment faire cet appel et récupérer le résultat de la commande.
Merci
Marsh Posté le 17-08-2009 à 17:52:04
hello regarde ma classe
la doc
http://gadille.free.fr/doc/java/te [...] Utils.html
la classe
http://gadille.free.fr/doc/java/te [...] ssing.java
le test
http://gadille.free.fr/doc/java/te [...] ssing.java
un exemple d'utilisation
SystemProcessing sp = new SystemProcessing();
sp.executeCmd("hostname -i" );
ip=sp.readLine(2);
Marsh Posté le 19-08-2009 à 14:22:59
moi23372 a écrit : faire appel à des commandes de l'OS enlève à JAVA sa puissance de portabilité. A vrai dire, il n'a pas été conçu pour ce genre de chose, bien qu'il le permet quand même. Donc à utiliser avec des pincettes. |
C'est juste. Cependant, existe-t-il une méthode en java permettant de connaitre la liste des process tournant sur la machine (le serveur Unix) ? Cela éviterait justement l'appel à des commandes unix. Le but étant de regarder si un traitement shell est en cours d'exécution pour ne pas faire de déplacement de fichier intempestif pendant ce temps.
Marsh Posté le 19-08-2009 à 17:10:35
gillin a écrit : |
t'as une ip chinoise? t'as pas accès à google?
en tout cas je ne crois pas que ce soit possible... au mieux tu peux peut être lister les jvm qui sont en cours, mais c'est tout.
Marsh Posté le 19-08-2009 à 17:21:40
pataluc a écrit : |
C'est bien parce que j'ai accès à google que j'ai eu la référence de ce site sur lequel je m'informe ...
Merci tout de même.
Marsh Posté le 23-03-2006 à 15:03:44
Salut a tous,
Je suis entrain de reprendre mes cours et notes de Java et à l'instant ou je vous parle, je me pose une question.
Peut on faire et si oui comment apeller des commandes de shells Unix dans un programme?