Les Allergies
Alimentaires
Posez votre question Signaler

Executer un script shell par java

momocanada 10Messages postés 25 avril 2008Date d'inscription - Dernière réponse le 9 juin 2008 à 17:17
Bonjour,
je veux executer un script shell par un programme java ,
ceci est mon programme java
import java.io.* ;
public class test1
{
private static Runtime runtime=Runtime.getRuntime();
private static Process test ;
public static void main (String[] args )
{
try {
test=runtime.exec("./my-script" ) ;
//int exitval=test.exitvalue();
//System.out.println( "resultat" + exitval);
}
catch (IOException ex)
{
System.out.println("echec du test");
}
}
}
et ceci est mon script
#!/bin/bash
# My first script
echo "test line" > test
tcpreplay --intf1=eth1 --intf2=eth2 --cachefile=trace-http.cache trace-http.pcap
Le probleme est que la premiere commande "echo" est execute alors que la deuxieme commande qui un commande pour rejouer un trafic donne ne s'execute pas , sachant que j'ai deja teste le script sur la ligne de commandes et ça marche
est-ce que quelqu'un peut m'aider
merci beaucoup
Lire la suite 

Executer un script shell par java »

1 réponses
Réponse
+1
moins plus
Voici une solution qui devrait marcher. Tu sauvegardes cette classe dans le même rep que ton shell et tu lances ...
Bien sûr, tu peux donner tout le chemin absolu de ton script dans ton main java. Bonne chance.

import java.io.*;

public class ExecDemoShell {
static void lancerShell (String nomShell)
throws IOException {

// start the ls command running

Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("ksh" + " " + nomShell);

// put a BufferedReader on the ls output

InputStream inputstream =
proc.getInputStream();
InputStreamReader inputstreamreader =
new InputStreamReader(inputstream);
BufferedReader bufferedreader =
new BufferedReader(inputstreamreader);

// read the ls output

String line;
while ((line = bufferedreader.readLine())
!= null) {
System.out.println(line);
}

// check for ls failure

try {
if (proc.waitFor() != 0) {
System.err.println("exit value = " +
proc.exitValue());
}
}
catch (InterruptedException e) {
System.err.println(e);
}
}


public static void main(String[] args)
throws IOException {
if (args.length != 1) {
System.out.println(
"missing directory");
System.exit(1);
}
lancerShell("my-script");
}
}
Ajouter un commentaire
Ce document intitulé « Executer un script shell par java » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?