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 :

Shell pour insérer des commande dans un logiciel


Sujet :

Shell et commandes GNU

  1. #1
    Invité
    Invité(e)
    Par défaut Shell pour insérer des commande dans un logiciel
    Bonjour,

    Je gosse depuis un moment sur un problème et je voudrais l'avis de personnes qui s'y connaissent.
    Dans mon terminal Linux, je tape la commande nécessaire pour lancer le logiciel (STAR CD) que j'utilise. Comme il est sans interface graphique je dois taper certaines commandes propres au logiciel afin de régler mes paramètres.
    Ce que je souhaiterai faire, c'est faire un shell qui lance STAR CD puis qui lui donne certaines commandes pour automatiser le traitement de mes données. Entre les commandes de STAR CD, il faudrait une temporisation pour lui laisser le temps de faire les choses.

    J'ai essayé pas mal de choses en associant expect et sleep mais rien n'a fonctionné. J'ai aussi vu parler de xdotool mais il n'est pas installé et je n'est pas le droit.

    Je bute là dessus depuis un moment, donc si vous avez des idée elles sont les bienvenues. Et puis si j'ai pas été très clair dans l'explication, n'hésitez pas!

    Bonne soirée

  2. #2
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 262
    Points
    12 262
    Par défaut
    peut etre un genre de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    STAR CD << EOT 
    commande1
    commande2
    ...
    commande2048
    EOT
    et la pas besoin de temporisation puisque les commandes internes se lanceront en sequence...



    un exemple que j'ai fait recement pour obtenir une liste de fichier dans un FTP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ftp -i hbrt@baal << EOT > liste.txt
    cd tempo
    ls
    cd ..
    cd tempp
    ls
    bye
    EOT

  3. #3
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 266
    Points : 13 526
    Points
    13 526
    Par défaut
    Bonjour Jo33140,

    tu parles de faire un shell. Une première idée pourrait être de lire des lignes au clavier et les envoyer
    1. soit sur stdin
    2. soit directement en lançant Star CD
    (il faut que tu donnes plus de précisions sur la façon dont tu peux interagir)

    voici un exemple de script:

    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
    #!/bin/bash
     
    monInput=$1
    while read maLigne
    do
        param=${maLigne:1}
        commande=${maLigne:0:1}
     
        if [ "$commande" == "+" ]
        then
            echo $param
        fi
     
        if [ "$commande" == "=" ]
        then
            starcd $monInput
        fi
     
        if [ "$commande" == "-" ]
        then 
            starcd $monInput
        fi
     
        if [ "$commande" == "/" ]
        then 
            monInput=$param
        fi
     
    done
    Ce n'est qu'un exemple.
    Le premier signe que tu rentreras sera une commande et le reste sera le paramètre à utiliser

  4. #4
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 842
    Points
    7 842
    Par défaut
    Citation Envoyé par Jo33140 Voir le message
    J'ai essayé pas mal de choses en associant expect et sleep mais rien n'a fonctionné.
    "expect" est l'outil standard sous Linux pour répondre au besoin que tu exprimes.

    Le mieux serait que tu montres ce que tu as essayé avec expect pour que quelqu'un t'aide à le corriger.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    La solution de frp31 a parfaitement fonctionné.
    Pour la solution de Flodelarab, je ne pense pas que ça fonctionnerait. Parce que, si j'ai bien compris, a chaque if que tu fais tu ouvres de nouveau STAR CD et dans mon cas, le logiciel n'accepterai pas ça.

    En tout cas, merci pour votre aide!

  6. #6
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 266
    Points : 13 526
    Points
    13 526
    Par défaut
    Absolument! La méthode de frp31 est excellente.

    Mais elle ne fait rien de plus qu'une commande normale. Elle permet d'éviter les soucis avec ' ou " si on fait une commande sur plusieurs lignes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ starcd <<< " blabla
    blabla
    blabla "
    $ starcd <<< ' blabla
    blabla '
    $ starcd <<EOT
    blabla
    blabla
    EOT
    Les 3 choses ci-dessus sont équivalentes.

    Tu peux aussi rediriger à l'entrée de starcd des fichiers plutôt que de réécrire à chaque fois tes paramétrages. C'est ce que je voulais dire en parlant de stdin.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    starcd <monfichierdeparam.txt

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

Discussions similaires

  1. Réponses: 45
    Dernier message: 24/11/2013, 00h35
  2. Réponses: 0
    Dernier message: 16/12/2010, 12h15
  3. utilisation du calendrier pour insérer des dates dans ma BD Interbase
    Par Abou Zar dans le forum Bases de données
    Réponses: 4
    Dernier message: 22/06/2010, 07h23
  4. [VBA-E] Problème pour insérer des lignes dans une feuille Excel
    Par skystef dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/04/2007, 14h13
  5. [VBA-PP] macro pour insérer des images dans PowerPoint
    Par mashpro dans le forum VBA PowerPoint
    Réponses: 4
    Dernier message: 01/08/2006, 22h56

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