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

Shell et commandes GNU Discussion :

Retour de commande différent selon dimension de fenêtre


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2004
    Messages : 144
    Par défaut Retour de commande différent selon dimension de fenêtre
    Bonjour,

    J'ai un script qui utilise expect de la manière suivante (variable mises volontairement)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    expect -d -c 'spawn ssh -l $login $IP;expect "Password:";send  $password\n";expect "(Machine $machine.domain)> ";send "$cmd\n";expect  "[1]> ";send "\n";expect "(Machine $machine.domain)> ";send "exit\n";expect eof'
    quand je lance le script en ligne de commande et quand je le cron, le format de mon retour est différent. Comment faire en sorte que la cron lance le script comme si la fenêtre était en mode plein écran ?

    merci

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    je ne comprend.
    l'affichage de cron ne se faisant pas dans un terminal, mais dans un mail, ou dans un fichier, il ne devrait pas être limité; et, d'une machine à l'autre, la résolution de l'écran peut ne pas être configurée avec les mêmes valeurs.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 361
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 361
    Par défaut
    Bonjour,

    Essaye en rajoutant l'option -t à ton ssh, il y a une petite chance que cela fonctionne.

    Cordialement.

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2004
    Messages : 144
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Bonjour,

    Essaye en rajoutant l'option -t à ton ssh, il y a une petite chance que cela fonctionne.

    Cordialement.

    Malheureusement cela ne marche pas;

    Pour tenter d'être un peu plus clair (pas forcément facile):
    mes sessions UNIX/linux se font via putty que je lance fenêtre format écran.
    Quand je lance mon script de cette manière, pas de problème, tout s'affiche bien, pas de problème de retour à la ligne non voulu et demande d'appui sur touche pour passer à la page suivante car tout s'affiche en une seule fois.

    Maintenant lorsque le script se lance via la crontab (effectivement j'utilise un retour par mail, mais aussi la redirection vers un fichier pour tenter de comprendre ce qu'il se passe)j'ai plein de retour à la ligne (comme si la fenêtre d'affichage n'était pas assez grande pour afficher un ligne complète et de demande de validation, comme si tout le résultat de la commande ne pouvait s'afficher en une seule fois, du style affichage page par page).
    Est c'est cette différence que je ne comprends pas. J'en suis le 1er surpris

    Merci de votre aide,

  5. #5
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 361
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 361
    Par défaut
    En fait, le souci, c'est que comme N_BaH, sous cron, tu n'as pas de terminal de type tty, donc ta commande ne sait pas comment afficher les informations.
    Tu peux essayer de biaiser (donc pas super propre si cela fonctionne) par cette manipulation:
    Via ton putty, tu récupères les 3 variables suivantes, et tu les initialises dans ton cron:
    TERM
    COLUMNS
    LINES

    Mais sincèrement, comme c'est du ssh, pourquoi ne passes tu pas par une clé ssh ?

    Cordialement.

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2004
    Messages : 144
    Par défaut Retour (mise en page) différents selon script lancé en crontab ou via le prompt
    Bonjour,

    Un exemple valant lieux d'un long discours:

    J'ai un script:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #!/bin/bash
    #cmd est une commande d'un équipement particulier
     
    expect -c "spawn ssh -t -l $USER $HOST cmd; expect Enter;send  \"$PASSWORD\n\";expect eof" | grep "^[1-9]" | sed -s 's/\*/-/g' > $RESULT
    Le fichier $RESULT, lancé via prompt est comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    1 vaaaaaaaaaaaaaaaaaal1	champs1	champs2	champs3	champs4	champ5
    2 val2	champs1	champs2	champs3	champs4	champ5
    3 -val3	champs1	champs2	champs3	champs4	champ5
    4 val4	champs1	champs2	champs3	champs4	champ5
    5- val5	champs1	champs2	champs3	champs4	champ5
    ....
    8- vaaaaaaaaaal8	champs1	champs2	champs3	champs4	champ5
    ........
    12- vaaaaaaaaaaaaaaaaal5	champs1	champs2	champs3	champs4	champ5
     
    20 val20		champs1	champs2	champs3	champs4	champ5
    Le même fichier $RESULT, lancé via CRON est comme ceci:
    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
    1 vaaaaaaaaaaaaaaaaaal1	champs1	champs2	champs3	champs4
    champ5
    2 val2	champs1	champs2	champs3	champs4	champs5
    3- val3	champs1	champs2	champs3	champs4	champs5
    4 val4	champs1	champs2	champs3	champs4	champ5
    5- val5	champs1	champs2	champs3	champs4	champ5
    .....
    8- vaaaaaaaaaal8	champs1	champs2	champs3	champs4
    champ5
    ......
    12- vaaaaaaaaaaaaaaaaal5	champs1	champs2	champs3	champs4
    champ5
     
    ....
    20-val20 champs1	champs2	champs3	champs4	champ5
    Comment expliquer cette différence?

  7. #7
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 361
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 361
    Par défaut
    Bonsoir,

    Pas sur que cela soit ça, mais souvent cela joue sur les mises en page.
    Depuis ton prompt et depuis ta crontab, essaie de voir la valeur des 2 variables suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo $LINES
    echo $COLUMNS
    Sinon, tu peux voir aussi du coté du TERM:
    Cordialement.

  8. #8
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2004
    Messages : 144
    Par défaut
    J'ai créé un script à cet effet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ cat test_lines_cols_fab.sh
    #!/bin/bash
    echo $LINES
    echo $COLUMNS
    $./test_lines_cols_fab.sh

    $ ==> Rien de s'affiche
    Via le prompt:
    $ echo $LINES
    61
    $ echo $COLUMNS
    158
    ==> Pourquoi n'ai je pas d'affichage en lançant depuis le script?

  9. #9
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 361
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 361
    Par défaut
    En fait, ce sont des variable local (non exportés) donc, cela ne biaisera pas le crontab.
    Peut-être avec TERM, mais je doute fortement.
    La vrai solution serait celle-ci, mais je ne sais pas si sous crontab cela fonctionnerait car je en pense pas qu'il ouvre un tty.
    tu peux toujours essayer:
    et si cela te retourne quelque chose qui ressemble à ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    speed 38400 baud; rows 61; columns 180; line = 0;
    intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
    flush = ^O; min = 1; time = 0;
    -parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -cdtrdsr
    -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
    opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
    isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
    il suffirait de positionner le nombre de colonne via:
    Voici un exemple avec changement d'affichage:
    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
    $stty -a
    speed 38400 baud; rows 61; columns 172; line = 0;
    intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
    flush = ^O; min = 1; time = 0;
    -parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -cdtrdsr
    -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
    opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
    isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
    $stty cols 60
    $ls
    fich     titi1--Apr-xxx  titi1--Jul-xxx  titi1--Oct-xxx
    fich_i   titi1--Aug-xxx  titi1--Jun-xxx  titi1--Sep-xxx
    fichier  titi1--Dec-xxx  titi1-Mar-xxx   toto
    fich_ii  titi1--Fev-xxx  titi1--May-xxx  totoCONF.cfg
    pof      titi1--Jan-xxx  titi1--Nov-xxx  XX1
    $stty cols 172
    $ls
    fich    fichier  pof             titi1--Aug-xxx  titi1--Fev-xxx  titi1--Jul-xxx  titi1-Mar-xxx   titi1--Nov-xxx  titi1--Sep-xxx  totoCONF.cfg
    fich_i  fich_ii  titi1--Apr-xxx  titi1--Dec-xxx  titi1--Jan-xxx  titi1--Jun-xxx  titi1--May-xxx  titi1--Oct-xxx  toto            XX1
    $
    Cordialement.

  10. #10
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2004
    Messages : 144
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    En fait, ce sont des variable local (non exportés) donc, cela ne biaisera pas le crontab.
    Peut-être avec TERM, mais je doute fortement.
    La vrai solution serait celle-ci, mais je ne sais pas si sous crontab cela fonctionnerait car je en pense pas qu'il ouvre un tty.
    tu peux toujours essayer:
    et si cela te retourne quelque chose qui ressemble à ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    speed 38400 baud; rows 61; columns 180; line = 0;
    intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
    flush = ^O; min = 1; time = 0;
    -parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -cdtrdsr
    -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
    opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
    isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
    il suffirait de positionner le nombre de colonne via:
    Voici un exemple avec changement d'affichage:
    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
    $stty -a
    speed 38400 baud; rows 61; columns 172; line = 0;
    intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
    flush = ^O; min = 1; time = 0;
    -parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -cdtrdsr
    -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
    opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
    isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
    $stty cols 60
    $ls
    fich     titi1--Apr-xxx  titi1--Jul-xxx  titi1--Oct-xxx
    fich_i   titi1--Aug-xxx  titi1--Jun-xxx  titi1--Sep-xxx
    fichier  titi1--Dec-xxx  titi1-Mar-xxx   toto
    fich_ii  titi1--Fev-xxx  titi1--May-xxx  totoCONF.cfg
    pof      titi1--Jan-xxx  titi1--Nov-xxx  XX1
    $stty cols 172
    $ls
    fich    fichier  pof             titi1--Aug-xxx  titi1--Fev-xxx  titi1--Jul-xxx  titi1-Mar-xxx   titi1--Nov-xxx  titi1--Sep-xxx  totoCONF.cfg
    fich_i  fich_ii  titi1--Apr-xxx  titi1--Dec-xxx  titi1--Jan-xxx  titi1--Jun-xxx  titi1--May-xxx  titi1--Oct-xxx  toto            XX1
    $
    Cordialement.
    Je pense que tu as raison:

    Via le prompt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $ stty -a
    speed 38400 baud; rows 61; columns 158; line = 0;
    intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
    flush = ^O; min = 1; time = 0;
    -parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
    -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel
    opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
    isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
    Via script "croné":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $ cat test_lines_cols_fab.sh
    #!/bin/bash
    RES="lines_cols.txt"
    stty -a > $RES
     
    $ ls -l lines_cols.txt
    -rw-r--r--  1 xxxxxxx yyy 0 Feb 28 13:00 lines_cols.txt
    $
    suis un peu perdu la....

Discussions similaires

  1. Modélisation et agrégation différente selon la dimension
    Par n.roussaly dans le forum Débuter
    Réponses: 3
    Dernier message: 19/11/2012, 12h44
  2. Réponses: 1
    Dernier message: 17/07/2011, 13h25
  3. tailles d'input différentes selon les postes (?)
    Par mch_27 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 26/10/2005, 11h21
  4. [Interface graphique]Composant différents selon le PC
    Par Cyborg289 dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 01/08/2005, 10h05
  5. CSS : fichier include différent selon chaque resolution
    Par Sylvain245 dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 31/03/2005, 17h57

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