IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

jsch ligne en sortie tronquée


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 45
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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;
        }
    }

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    C'est toi qui jette ce caractère!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                while (stdoutReader.read() != -1) // lit un caractère
                    System.out.println(stdoutReader.readLine()); //lit le reste de la ligne

  3. #3
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 45
    Par défaut
    Merci Beaucoup Tchize
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                            String line = null;
    			while ((line = stdoutReader.readLine()) != null )
    			System.out.println(stdoutReader.readLine());

  4. #4
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 45
    Par défaut
    Je me suis quelque peut emballé, il m'affiche une ligne sur deux

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    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.

  6. #6
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 45
    Par défaut
    La c'est bon, le détail a son importance Merci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                  while ((line = stdoutReader.readLine()) != null) {
                    //System.out.println(stdoutReader.readLine());
    				System.out.println(line) ;
    				}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lignes de sortie dans un tableau
    Par andre94200 dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 03/08/2011, 16h04
  2. [XSLT 1.0] supprimer passage à la ligne en sortie texte
    Par bdiffo dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 21/02/2011, 16h58
  3. [XSLT] Limiter le nombre de lignes en sortie
    Par soso78 dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 20/05/2008, 14h21
  4. XmlTextWriter sortie tronquée
    Par ctxnop dans le forum C#
    Réponses: 3
    Dernier message: 13/07/2007, 14h52
  5. find / grep : comment diminuer la longueur d'une ligne en sortie
    Par gifffftane dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 11/04/2007, 15h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo