Comment exécuter une commande shell dans Java?
Je pensais que si je pouvais envoyer un shell pour exécuter Client-Serveur ipconfig. Est-ce possible?
C'est mon code en Local:
class Comando {
public static void main(String args[]) {
String s = null;
try {
//Determinar en qué SO estamos
String so = System.getProperty("os.name");
String comando;
//Comando para Linux
if (so.equals("Linux"))
comando = "ifconfig";
//Comando para Windows
else
comando = "ipconfig";
//Ejcutamos el comando
Process p = Runtime.getRuntime().exec(comando);
BufferedReader stdInput = new BufferedReader(new InputStreamReader(
p.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(
p.getErrorStream()));
//Leemos la salida del comando
System.out.println("Ésta es la salida standard del comando:\n");
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
//Leemos los errores si los hubiera
System.out
.println("Ésta es la salida standard de error del comando (si la hay):\n");
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}
System.exit(0);
} catch (IOException e) {
System.out.println("Excepción: ");
e.printStackTrace();
System.exit(-1);
}
}
}
Vous en remercie d'Avance!
OriginalL'auteur hdraven | 2014-04-27
Vous devez vous connecter pour publier un commentaire.
Pas très Stackoverflow question amicale, puisque je ne suis pas sûr que si vous demandez à propos de l'exécution d'une commande Shell, ou ipconfig en général.
Si le premier est le cas ici: Yep, vous pouvez utiliser
Runtime.getRuntime.exec()
.Réponses (En Stackoverflow):
En outre les réponses fournies, voici mon exemple sur la façon dont vous le faites avec "host-t" commande pour les recherches DNS. Je recommande généralement de lire la liste que vous obtenez et les ajouter dans une Chaîne de caractères à des fins de journalisation.
L'autre solution qui heraua été proposé d'utiliser
ProcessBuilder
et exécuter la commande à partir de là. Pour cela, vous devez utiliser la version Java SE 7 à la hausse. Voici un exemple qui commence un processus avec une modification de répertoire de travail et de l'environnement, et redirige la sortie standard et d'erreur pour être ajouté à un fichier journal:Si vous voulez en savoir plus sur ProcessBuilder, lisez la documentation: Orcale la Documentation de la Classe ProcessBuilder
Eh bien oui, pour la meilleure pratique: mettre des codes qui lui sont liés dans leurs propres morceaux. Créer un Util.java par exemple et de le mettre là ou être plus précis et dire ShellUtil.java et d'une façon générale la fonction que vous pouvez appeler n'importe quel interpréteur de commande.
Avant JDK 5.0, le seul moyen est d'utiliser la méthode exec() de java.lang.Classe d'exécution. Après le JDK 5.0, vous pouvez exécuter une commande dans un processus distinct, à travers une classe appelée
ProcessBuilder
grâce herau, je ne savais pas à propos de ProcessBuilder mais vous avez raison. J'ai mis à jour ma réponse avec les Process Builder Option.
Im fait, il fonctionne très bien! 🙂
OriginalL'auteur ambodi