Précédent   Forum des professionnels en informatique > Java > Général Java
Général Java Java SE, Java ME, APIs, Persistance, JDBC, Spring, XML. Avant de poster -> FAQ Java, Sources Java
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/01/2012, 11h11   #1
Invité régulier
 
Inscription : décembre 2010
Messages : 33
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 33
Points : 8
Points : 8
Par défaut jsch ligne en sortie tronquée

Bonjour,

Je fais du ssh via le code ci-dessous, tout fonctionne à merveille ... sauf l'affichage en sortie(InputStream stdout) qui tronque systématiquement le premier caractère.Par exemple si je passe la commande sous unix "ls -al"

j'ai le résultat suivant :

rw-r----- 1 root dba 1785 27 jan 10:56 UserInfo.java
rw-r----- 1 root dba 12514 27 jan 10:56 Util.java

à la place de :

drw-r----- 1 root dba 1785 27 jan 10:56 UserInfo.java
-rw-r----- 1 root dba 12514 27 jan 10:56 Util.java

J'ai regardé le code source de Channel.java et il est indiqué au niveau des "stream" : 32*1024 // this value should be customizable.

faut-il modifier ce paramètre.

Merci pour votre aide.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
 
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
 
public class TestSSH {
    public static Session oSession = null;
 
    public static void main(String[] arg) {
        //String sCommandeRecupSession = ". /app/o3p80/.profile;sqlplus system/manager@demoweb \n set heading on pages 32767 lin 32767 trims ON; \n select count(*) as SESSION_NBR from v$session s; \n select s.sid ||'¤'|| s.serial# ||'¤'|| s.osuser ||'¤'|| s.program ||'¤'|| s.status as SESSION_VALEUR from v$session s; \n exit; \n exit; \n";
		//String sCommandeRecupSession = ". /app/o3p80/.profile;\n sqlplus / as sysdba @test2.sql\n ";
		String sCommandeRecupSession = ". /app/o3p80/.profile;ls -al\n";
 
        try {
            JSch jsch = new JSch();
 
            oSession = jsch.getSession("user", "hostname", 22);
			oSession.setPassword("password");
 
            java.util.Properties config = new java.util.Properties();
            config.put("StrictHostKeyChecking", "no");
            oSession.setConfig(config);
 
            oSession.connect();
 
            executeCommand(sCommandeRecupSession);
 
            oSession.disconnect();
        } catch (Exception e) {
            System.out.println(e);
        }
    }
 
    public static int executeCommand(String command) {
        int exitCode = -1;
        ChannelExec channel = null;
		BufferedReader stdoutReader = null;
        BufferedReader stderrReader = null;
        try {
            channel = (ChannelExec) oSession.openChannel("exec");
 
            channel.setCommand(command + "\n");
 
            InputStream stdout = channel.getInputStream();
            InputStream stderr = channel.getErrStream();
 
            channel.connect();
 
            stdoutReader = new BufferedReader(new InputStreamReader(stdout));
            stderrReader = new BufferedReader(new InputStreamReader(stderr));
 
            while (stdoutReader.read() != -1)
                System.out.println(stdoutReader.readLine());
 
            exitCode = channel.getExitStatus();
 
            return exitCode;
        } catch (IOException e) {
            System.out.println("Cannot execute remote command: " + command
                    + " : " + e.getMessage());
        } catch (Exception e) {
            System.out.println("Cannot execute remote command: " + command
                    + " : " + e.getMessage());
        } finally {
            try {
                stdoutReader.close();
                stderrReader.close();
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
            if (channel != null) {
                channel.disconnect();
            }
        }
        return exitCode;
    }
}
kilou88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 11h18   #2
Modérateur
 
Avatar de tchize_
 
Homme
Responsable de service informatique
Inscription : avril 2007
Messages : 16 199
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : Belgique

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Service public

Informations forums :
Inscription : avril 2007
Messages : 16 199
Points : 25 345
Points : 25 345
Envoyer un message via MSN à tchize_ Envoyer un message via Skype™ à tchize_
C'est toi qui jette ce caractère!

Code :
1
2
            while (stdoutReader.read() != -1) // lit un caractère
                System.out.println(stdoutReader.readLine()); //lit le reste de la ligne
__________________
⥀⥁ Чиз faq java, cours java, javadoc. Pensez à et
"Votre génitrice tute des pédoncules au pandémonium" (le conjurateur, 1973)
tchize_ est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/01/2012, 11h49   #3
Invité régulier
 
Inscription : décembre 2010
Messages : 33
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 33
Points : 8
Points : 8
Merci Beaucoup Tchize
Code :
1
2
3
4
 
                        String line = null;
			while ((line = stdoutReader.readLine()) != null )
			System.out.println(stdoutReader.readLine());
kilou88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 11h56   #4
Invité régulier
 
Inscription : décembre 2010
Messages : 33
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 33
Points : 8
Points : 8
Je me suis quelque peut emballé, il m'affiche une ligne sur deux
kilou88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 13h01   #5
Modérateur
 
Avatar de tchize_
 
Homme
Responsable de service informatique
Inscription : avril 2007
Messages : 16 199
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : Belgique

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Service public

Informations forums :
Inscription : avril 2007
Messages : 16 199
Points : 25 345
Points : 25 345
Envoyer un message via MSN à tchize_ Envoyer un message via Skype™ à tchize_
Citation:
Envoyé par kilou88 Voir le message
Je me suis quelque peut emballé, il m'affiche une ligne sur deux
et pour exactement la même raison.
__________________
⥀⥁ Чиз faq java, cours java, javadoc. Pensez à et
"Votre génitrice tute des pédoncules au pandémonium" (le conjurateur, 1973)
tchize_ est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/01/2012, 13h45   #6
Invité régulier
 
Inscription : décembre 2010
Messages : 33
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 33
Points : 8
Points : 8
La c'est bon, le détail a son importance Merci.
Code :
1
2
3
4
5
 
              while ((line = stdoutReader.readLine()) != null) {
                //System.out.println(stdoutReader.readLine());
				System.out.println(line) ;
				}
kilou88 est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h05.


 
 
 
 
Partenaires

Hébergement Web