Attendre fin d'execut° d'1 cmd sur serveur !
madeinloveyou
Messages postés
71
Statut
Membre
-
madeinloveyou Messages postés 71 Statut Membre -
madeinloveyou Messages postés 71 Statut Membre -
Bonjour,
Je travail sur java sous Eclipse. J'utilise la librairie Trilead SSH-2 for Java
pour me connecter, exécuter mes scripts, ...
J'execute des scripts sur un serveur, le problème est que c'est scripts peuvent durer assez
longtemps ... mon programme lui n'attend pas la fin de l'exécution de la commande "./script.sh"
pour executer le second script !!! aye !!! Donc je souhaiterai savoir si quelqu'un connait un
moyen d'attendre le fin de l'exécution du script ?
De plus, je n'arrive toujours pas à récupérer les données renvoyé par le script !!!
Aidez moi s'il vous plaît
Merci d'avance
(Ca Urgeeeeeeeee !!!!)
Je travail sur java sous Eclipse. J'utilise la librairie Trilead SSH-2 for Java
pour me connecter, exécuter mes scripts, ...
J'execute des scripts sur un serveur, le problème est que c'est scripts peuvent durer assez
longtemps ... mon programme lui n'attend pas la fin de l'exécution de la commande "./script.sh"
pour executer le second script !!! aye !!! Donc je souhaiterai savoir si quelqu'un connait un
moyen d'attendre le fin de l'exécution du script ?
De plus, je n'arrive toujours pas à récupérer les données renvoyé par le script !!!
Aidez moi s'il vous plaît
Merci d'avance
(Ca Urgeeeeeeeee !!!!)
A voir également:
- Attendre fin d'execut° d'1 cmd sur serveur !
- Cmd - Guide
- Fin des zfe - Guide
- Changer serveur dns - Guide
- Scannow cmd - Guide
- Cmd sur mac - Guide
6 réponses
je ne comprends pas.
si tu met "./script.sh" le shell courant devrait attendre que le script se termine.
le lance tu bien sans le '&' à la fin ?
place un "echo FIN" à la fin de script.sh pour être sur qu'il n'est pas terminé.
Si ça se trouve ton script exécute une tâche en arrière plan, et c'est elle qui n'est pas terminé.
Comment lance tu la commande ssh ? si ça se trouve le problème peut venir de là.
Par exmple, pour exécuter des script, j'utilise ssh -t
si tu met "./script.sh" le shell courant devrait attendre que le script se termine.
le lance tu bien sans le '&' à la fin ?
place un "echo FIN" à la fin de script.sh pour être sur qu'il n'est pas terminé.
Si ça se trouve ton script exécute une tâche en arrière plan, et c'est elle qui n'est pas terminé.
Comment lance tu la commande ssh ? si ça se trouve le problème peut venir de là.
Par exmple, pour exécuter des script, j'utilise ssh -t
Je me connecte par ssh de cette façon :
voici comment j'execute mes scripts :
voici l'essentiel de la classe :
Voilà tous ce qu'il faut savoir !!
mon probleme c qu'il n'y a rien dans le Line
alors qu'à la main mon script renvoie bien un nombre ???
try {
conn = new Connection("serveur");
conn.connect();
@SuppressWarnings("unused")
boolean isAuthenticated = conn.authenticateWithPassword
("login", "pass");
}
catch(IOException except) {
JOptionPane.showMessageDialog(null, except.getMessage(),
"Error", JOptionPane.ERROR_MESSAGE);
}
voici comment j'execute mes scripts :
// j'appel unne classe que j'ai créer => CommandeExterne
arg[0] =
("cd /projet/tours/jlgatti/ | megablast -i Input/"+
ficInput+" -d "+chemindb+" -D3 -p "+percent+
" -o Output/"+ficOutput);
cmdExt.Execute(arg,true,false);
voici l'essentiel de la classe :
public void Execute
(String []command, boolean connex, boolean R) {
Process p = null;
InputStream is = null;
try {
if(connex){ // si le script s'execute sur le serveur !
session = connection.openSession();
session.execCommand(command[0]);
s = session.getStdout();
if(session.getStdout().equals(null))
is = session.getStderr();
}
else { ... ... ... }
is = p.getInputStream();
}
if(R){ // s'il y a un résultat afficher par le script !
InputStreamReader isr = new InputStreamReader(is);
FileOutputStream fos = new FileOutputStream("results");
OutputStreamWriter w = new OutputStreamWriter(fos);
BufferedReader br = new BufferedReader(isr);
String line = null;
line = br.readLine();
try {
while (line != null){
if (line != null && !line.equals(" ") & !line.equals("\n")){
res[i] = line;
w.write(line);
w.write("\n");
i++;
}
line = br.readLine();
}
w.close();
Voilà tous ce qu'il faut savoir !!
mon probleme c qu'il n'y a rien dans le Line
alors qu'à la main mon script renvoie bien un nombre ???
désolé, je ne comprend pas trop ton programme.
Je trouve bizarre le tunnel entre cd et megablast...
Regarde si tu n'as pas des options de connexion qui pourrait te servir.
Je trouve bizarre le tunnel entre cd et megablast...
Regarde si tu n'as pas des options de connexion qui pourrait te servir.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question