9
votes

En Java, envoyez des commandes à un autre programme de ligne de commande

J'utilise Java sur Windows XP et je souhaite pouvoir envoyer des commandes à un autre programme tel que Telnet. Je ne veux pas simplement exécuter un autre programme. Je veux l'exécuter, puis envoyez-la une séquence de commandes une fois qu'il est en cours d'exécution. Voici mon code de ce que je veux faire, mais cela ne fonctionne pas: (Si vous déconnectez et modifiez la commande en «cmd», cela fonctionne comme prévu. S'il vous plaît aider.) Ceci est un exemple simplifié. En production, il y aura beaucoup plus de commandes envoyées, donc s'il vous plaît ne suggérez pas d'appeler "Telnet localhost". xxx


2 commentaires

Vous voulez donc une solution de communication inter Process pour Java?


Il me semble que telnet écrit sa sortie à autre chose que le flux d'entrée du processus et Java ne le captimiste pas. Est le processus.getInputStream () la seule méthode de lecture de ce qu'est un processus?


4 Réponses :



3
votes

3 commentaires

Je suis d'accord. Ceci est un exemple simplifié pour montrer mon problème, donc je l'ai gardé seul fileté. Pouvez-vous s'il vous plaît expliquer ce que vous entendez par entrée standard contre console et passepoiser le texte?


@Bradvido Eh bien, Echo Open Localhost | Telnet ne fonctionne pas mais Echo Dir C: | cmd fait, donc je soupçonne fortement que Windows Telnet Client utilise l'API de la console pour détecter les touches plutôt que de lire son flux d'entrée.


Je vois ça maintenant. C'est évidemment le problème que je rencontre. Avez-vous une idée de la manière dont je peux écrire à la console d'une application au lieu du flux d'entrée?



3
votes

Si vous souhaitez contrôler une session Telnet de Java, vous pourrez peut-être utiliser ce Java Telnet Library ... Vous pouvez faire les mêmes choses (open Connections, envoyer le nom d'utilisateur / mot de passe, envoyer des commandes et recevoir des résultats) mais sans reproduire un processus distinct.


1 commentaires

Le Telent était simplement pour un exemple. J'ai besoin que cela soit générique afin que je puisse exécuter n'importe quelle commande exécutable et écrire des commandes.



1
votes

Vous pouvez jeter un coup d'œil sur le TELNETT TASK Vous pouvez appeler Il est directement dans votre code sans avoir à utiliser un fichier build.xml .

Vous pouvez également jeter un coup d'œil sur le code source et voyez comment ils le font.


0 commentaires