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 -
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
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:
- Appel d'un code linux sous une appli java
- Code ascii - Guide
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
4 réponses
Si c'est des appels système, tu peux utiliser exec
Exemple :
Et s'il est nécessaire de récupérer le résultat de la commande :
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();
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 ?
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 ?
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 !
Après, ta question relève peut-être plus de comment écrire ta commande système, que de comment l'implémenter en Java !
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);
}
}
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);
}
}
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 !
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 !