Rechercher : dans
Par :

Executer un script shell par java

Dernière réponse le 9 jun 2008 à 17:17:10 momocanada, le 4 jun 2008 à 17:53:08 
 Signaler ce message aux modérateurs

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

Configuration: Linux Fedora

Meilleures réponses pour « Executer un script shell par java » dans :
Exécuter un script shell VoirExécution d'un script Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités : 1. Le chemin absolu 2. Le chemin relatif 3. Modifier la variable PATH Note: Le Sha...

1

 quelqun, le 9 jun 2008 à 17:17:10

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");
}
}

Répondre à quelqun