2011-05-02 10 views
3

Je veux exécuter un script shell via java .J'utilise l'outil de génération de licence, il peut être appel à l'aide de la commande ./LicenseGen.sh, en vertu de ce que j'ai besoin d'exécuter une autre commande créer licensekey -x license-input.xml qui crée un nouveau fichier licensekey.xml où license-input.xml est un fichier d'entrée et licensekey est un fichier xml de sortie comment il est possible dans java s'il vous plaît aidez-moi.pour exécuter le script shell via java

mon code est

import java.io.*; 
import java.util.*; 

public class ProcessExample { 

/** 
* @param args 
*/ 
public static void main(String args[]) throws IOException { 

     File file=new File("/opt"); 
     // List<String> list=new List<String>(); 
     ProcessBuilder processBuilder = new ProcessBuilder("./LicenseGen.sh"); 
     processBuilder.directory(file); 

     Process process=processBuilder.start();  
     //processBuilder.command("create licensekey -x license-input.xml"); 
     //process=processBuilder.start(); 
     InputStream is = process.getInputStream(); 
     InputStreamReader isr = new InputStreamReader(is); 
     BufferedReader br = new BufferedReader(isr); 

     String line; 

     System.out.printf("Output of running %s is:", 
      Arrays.toString(args)); 

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

    } 
} 
+1

Quelle erreur obtenez-vous? –

+3

vous ne devriez pas poser de nouvelle question pour le même problème http://stackoverflow.com/questions/5831265/java-shell-script-question –

Répondre

6

Vous ne pouvez pas exécuter directement le script car il doit être interprété par un shell comme bash. Notez que bash est un exécutable.

ProcessBuilder pb = new ProcessBuilder("/bin/bash", "/path/LicenseGen.sh"); 
+0

étape 1: ./ LicenseGen.sh étape 2: créer une clé de licence -x licence-entrée .xml –

+0

@Nilesh Je pense que vous êtes mieux d'écrire et d'exécuter un script qui fait les deux étapes. – stacker

+0

Merci pour cela. Il a résolu mon problème. – Alessandro

0

J'ai largement utilisé JSch pour la connexion à distance et les exécutions de script. J'ai utilisé google Expect4j avec Jsch pour exécuter des scripts sur des machines distantes en mode expect (send/wait). Depuis, vous devez exécuter la commande l'un après l'autre, vous pouvez essayer ceci.

Il peut également être utilisé pour l'exécution locale dont vous avez besoin. The only worry is that you need to login (into your local machine) for execution.

Pour jsch, aller à http://www.jcraft.com/jsch/
Pour Expect4j, aller à http://code.google.com/p/expect4j/

Merci.

Questions connexes