Appel d'un code linux sous une appli java

malaik5 Messages postés 258 Date d'inscription   Statut Membre Dernière intervention   -  
malaik5 Messages postés 258 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Voilà j'ai un petit soucis,

je voudrais accéder à un serveur Linux distant (dont j'ai les droits d'accès) via un programme Java et après exécuter AUTOMATIQUEMENT des commandes Linux (c'est les commandes que je mets en dur dans le code qui vont être exécutées) comme si j'étais sur le serveur.

La première partie fonctionne parfaitement, j'arrive à me connecter au serveur ...

mais le truc c'est que je n'arrive pas à trouver comment lancer une suite d'instructions sans que moi j'intervienne !!, ce qui se passe actuellement c'est que je me connecte et après le programme attende que moi même je tape les commandes,

Si quelqu'un a une idée, je vous remercie
A voir également:

4 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Si c'est des appels système, tu peux utiliser exec

Exemple :

Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("ls"); // c'est bidon, je sais

Et s'il est nécessaire de récupérer le résultat de la commande :

Scanner out = new Scanner(process.getInputStream());
while (out.hasNextLine())
    System.out.println(out.nextLine());
out.close();

Scanner err = new Scanner(process.getErrorStream());
while (err.hasNextLine())
    System.err.println(out.nextLine());
err.close();
0
malaik5 Messages postés 258 Date d'inscription   Statut Membre Dernière intervention   33
 
Slt KX,
je ne sais pas si tu te rappelles de moi, on a partagé une discussion lmors d'un sujet dans forum, bon présentation faite :),

voilà le soucis avec ce que tu m'as donné (que j'ai déjà vu), comment tu précise le serveur cible ?
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Si c'est une commande Linux ("commandes que je mets en dur dans le code qui vont être exécutées"), j'imagine que le serveur sera lui aussi précisé en dur dans la commande...

Après, ta question relève peut-être plus de comment écrire ta commande système, que de comment l'implémenter en Java !
0
malaik5 Messages postés 258 Date d'inscription   Statut Membre Dernière intervention   33
 
non c'est une implémentation Java,

public static void main(String[] arg){

try{
JSch jsch=new JSch();

//jsch.setKnownHosts("/home/foo/.ssh/known_hosts");

String host=null;
if(arg.length>0){
host=arg[0];
}
else{
host=JOptionPane.showInputDialog("Enter username@hostname",
System.getProperty("user.name")+
"@serveur");
}
String user=host.substring(0, host.indexOf('@'));
host=host.substring(host.indexOf('@')+1);

Session session=jsch.getSession(user, host, 22);

String passwd = JOptionPane.showInputDialog("Pass");
session.setPassword(passwd);

UserInfo ui = new MyUserInfo(){
public void showMessage(String message){
JOptionPane.showMessageDialog(null, message);
}
public boolean promptYesNo(String message){
Object[] options={ "yes", "no" };
int foo=JOptionPane.showOptionDialog(null,
message,
"Warning",
JOptionPane.DEFAULT_OPTION,
JOptionPane.WARNING_MESSAGE,
null, options, options[0]);
return foo==0;
}
};

session.setUserInfo(ui);
session.connect(30000); // making a connection with timeout.

Channel channel=session.openChannel("shell");

channel.setInputStream(System.in);

channel.setOutputStream(System.out);

channel.connect(3*1000);



}
catch(Exception e){
System.out.println(e);
}
}
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bravo ! Tu sais faire un copier-coller...

Mais vu que tu as trouvé le code de l'exemple 1, continue avec les autres !

Mais en quoi ça aide ? Si tu veux faire des appels systèmes en Java, il faut au minimum connaitre les commandes systèmes que tu veux effectuer, si tu veux passer par une bibliothèque comme JSch, alors regarde la documentation... mais ça sert à rien de balancer un code trouvé sur le net qui n'a probablement rien à voir avec ton problème !
0
malaik5 Messages postés 258 Date d'inscription   Statut Membre Dernière intervention   33
 
Merci l'intelligent
0