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 :

Script shell d'affichage


Sujet :

Shell et commandes GNU

  1. #1
    Membre très actif
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 433
    Par défaut Script shell d'affichage
    Bonjour je suis novice en scripting quelqu un pourrais me dire si ce script pour afficher le nombre de carte grphique par ligne et les ecrire dans un fichier
    texte est juste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #!/bin/bash
     
    my_function (){
    my_array = ("curl http://0.0.0.0:5000/rtx3060" "curl http://0.0.0.0:5000/rtx3070" "curl http://0.0.0.0:5000/rtx3080" "curl http://0.0.0.0:5000/rx6700")
    for x in 'curl http://0.0.0.0:5000/rtx3060' 'curl http://0.0.0.0:5000/rtx3070' 'curl http://0.0.0.0:5000/rtx3080' 'curl http://0.0.0.0:5000/rx6700'
    do
    echo rtx3060:${my_array[0]} \n rtx3070:${my_array[1]} \n rtx3080:${my_array[2]} \n rx6700:${my_array[3]} \n > sales.txt
    done}
    merci d'avance
      0  0

  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
    Bonjour,

    non, ce script n'est pas correct (l'assignation du tableau, entre autres).

    mais pourquoi ne le testes-tu pas pour voir comment il ne fonctionne pas ?

    a priori,
    la fonction est inutile
    de nombreuses informations sont répétées, alors qu'elles devraient être "variablisées"

    quand on débute, avant d'écrire un script, on teste chaque commande qui y figurera.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.
      0  0

  3. #3
    Membre très actif
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 433
    Par défaut
    pour variabiliser par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    my_array[0] = curl http://0.0.0.0:5000/rtx3060
    et ainsi de suite ?
    ...........
      0  0

  4. #4
    Membre très actif
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 433
    Par défaut
    $my_array[0] = curl http://0.0.0.0:5000/rtx3060
    et ainsi de suite ? plutot ?
      0  0

  5. #5
    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
    pas d'espaces.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.
      0  0

  6. #6
    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
    pour variabiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    adresse='http://0.0.0.0'
    port=5000
    cartes=( rtx3060 rtx3070 rtx3080 rx6700 )
    de plus, comme tu le vois, les variables ont des noms évocateurs de ce qu'elles contiennent.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.
      0  0

  7. #7
    Membre très actif
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 433
    Par défaut
    Merci beaucoup mais je suis desole mais je n'ai fais que du java dans ma vie qui est un language type et j'ai du mal avec le scripting quel est la sortie de curl peut on stocker un curl dans une variable y a t'il des types string chaine de caractère et des librairie en shell je sais qu'il y a des commandes et des invites et des varriables shell
    la derniere fois que j'ai fais du shell c'est en 1998 sous linux suse et en en 2017 et je trouve qu'il y a eu des changements je suis uniquement ingénieur java et j'ai du mal avec la syntaxe shell
    linux
      0  0

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 103
    Par défaut
    Citation Envoyé par s2a07 Voir le message
    Merci beaucoup mais je suis desole mais je n'ai fais que du java dans ma vie qui est un language type et j'ai du mal avec le scripting quel est la sortie de curl peut on stocker un curl dans une variable y a t'il des types string chaine de caractère et des librairie en shell je sais qu'il y a des commandes et des invites et des varriables shell
    la derniere fois que j'ai fais du shell c'est en 1998 sous linux suse et en en 2017 et je trouve qu'il y a eu des changements je suis uniquement ingénieur java et j'ai du mal avec la syntaxe shell
    linux
    Sur certains claviers, il y a une touche à droite avec une flèche de retour-vers-le-bas (que certains appellent communément "RETURN" (ou "RETOUR" (pour ceux qui ne comprennent pas bien l'anglais))) et qui est bien utile pour découper un texte en lignes, ce qui permet de l'aérer et le rendre plus lisible.
    Il existe aussi, en français, des signes de ponctuation...

    Citation Envoyé par s2a07 Voir le message
    Merci beaucoup
    mais je suis desole mais je n'ai fais que du java dans ma vie qui est un language type et j'ai du mal avec le scripting.

    quel est la sortie de curl ?

    peut on stocker un curl dans une variable ?

    y a t'il des types string chaine de caractère et des librairie en shell ?

    je sais qu'il y a des commandes et des invites et des varriables shell.

    la derniere fois que j'ai fais du shell c'est en 1998 sous linux suse et en en 2017 et je trouve qu'il y a eu des changements.

    je suis uniquement ingénieur java et j'ai du mal avec la syntaxe shell linux
    Si tu veux savoir quelle est la sortie de "curl", tu peux soit lire la doc man curl, soit essayer.

    Citation Envoyé par s2a07 Voir le message
    ...ce script pour afficher le nombre de carte grphique par ligne et les ecrire dans un fichier texte ...
    Donc ce que tu veux, c'est faire une boucle sur une liste d'URL comme, par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Pour chaque URL d'une liste d'URL
        - récupérer le nombre de cartes graphiques sur cette URL
        - afficher ce nombre pour cette URL
    C'est bien ça que tu souhaites ?

    (je ne suis qu'un vieil informaticien qui a appris à exprimer les solutions en algorithmes)

    Si tu reprends l'exemple de N_BaH, ça donnerait quelque chose comme (à vérifier et tester!):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    adresse='http://0.0.0.0'
    port=5000
    cartes=( rtx3060 rtx3070 rtx3080 rx6700 )
    fic_out=/tmp/fic_out.csv
     
    for carte in $cartes # Exceptionnellement sans guillemets autour de la variable... car on sait pourquoi !
    do
        curl_out=$(curl "$carte") # Avec guillemets autour de la variable, comme toujours... sauf si on sait pourquoi...
        # Traitement pour extraire le nombre de cartes
        nb_cg=$curl_out
        echo "$carte:$nb_cg" # Avec guillemets
    done
      1  0

  9. #9
    Membre très actif
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 433
    Par défaut
    bonsoir en fait je ne suis pas sur que ca marche car le nombre de carte graphique est recuperé par le résultat du
    curl http://0.0.0.0:5000/rtx...
    donc je devrais faire $var = curl http://0.0.0.0:5000/rtx...
    merci de me corriger svp
      0  0

  10. #10
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Bonjour

    Si les cartes sont renvoyées par une commande, on peut remplacer la boucle for par une boucle while avec 2 syntaxes possibles dont la deuxième est un "bash"-isme. (J'imagine ici qu'il y a une ligne par carte).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    curl "http://0.0.0.0:5000/rtx" | while read carte 
    do 
        curl_out=$(curl  blablabla$carte )
        nb_cg=$curl_out # le re-traitement n'est pas écrit
        echo "$carte:$nb_cg" # Avec guillemets
    done
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while read carte 
    do 
        curl_out=$(curl  blablabla$carte )
        nb_cg=$curl_out # le re-traitement n'est pas écrit
        echo "$carte:$nb_cg" # Avec guillemets
    done < <(curl "http://0.0.0.0:5000/rtx" )
      0  0

  11. #11
    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
    il nous faudrait un exemple représentatif d'une sortie type de la commande curl.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.
      1  0

  12. #12
    Membre très actif
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 433
    Par défaut
    je pense que la version finale c'est ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    cartes=( rtx3060 rtx3070 rtx3080 rx6700 )
    for carte in $cartes 
    do
        # Traitement pour extraire le nombre de cartes
        nb_cg=$(curl http://0.0.0.0:5000/carte) 
        echo "$carte:$nb_cg" # Avec guillemets
    done
    merci de me dire si c'est juste
      0  0

  13. #13
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 103
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    il nous faudrait un exemple représentatif d'une sortie type de la commande curl.
    Soyons précis (pour les ceusses qui ont besoin de précision)...

    Peux-tu nous montrer le résultat de curl http://0.0.0.0:5000/rtx3060 ?

    Citation Envoyé par s2a07 Voir le message
    je pense que la version finale c'est ca

    merci de me dire si c'est juste
    Il faut un "$" devant la référence à la valeur d'une variable:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    cartes=( rtx3060 rtx3070 rtx3080 rx6700 )
    for carte in $cartes 
    do
        # Traitement pour extraire le nombre de cartes
        nb_cg=$(curl "http://0.0.0.0:5000/$carte") 
        echo "$carte:$nb_cg" # Avec guillemets
    done
    Si la sortie du curl demandée précédemment fournit exactement le nombre de cartes, alors ça devrait te donner le résultat souhaité.

    Est-ce qu'il y a quelque chose qui t'empêche d'essayer les commandes proposées ?
      0  0

  14. #14
    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
    Citation Envoyé par jack-ft
    Citation Envoyé par NBaH
    il nous faudrait un exemple représentatif d'une sortie type de la commande curl.
    Soyons précis (pour les ceusses qui ont besoin de précision)...
    tu as l'impression que j'enfonce le clou sur des portes ouvertes ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.
      0  0

  15. #15
    Membre très actif
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 433
    Par défaut
    je suis désolé ca fais 4 heure que j'essaye d'afficher le resultat sous linux de curl "http://ipmachinelinux:5000/rtx3060" j'ai tout fais je suis desespere tout j'ai malheureusement tout essaye je ne comprends rien j'ai kill le process d'ou vient le problème ci joint la copie d'ecran du pb
    je vais devenir fou
    Images attachées Images attachées  
      0  0

  16. #16
    Membre très actif
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 433
    Par défaut
    c'est bon c'etait juste une application a mettre en background
      0  0

  17. #17
    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
    on n'a toujours pas la sortie à traiter.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.
      0  0

  18. #18
    Membre très actif
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 433
    Par défaut
    je suis depasse on doit afficher le nombre de cartes graphique et ca ne marche pas des histoire de nb_out non reconnu ou de guillemet
      0  0

  19. #19
    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
    on n'a toujours pas la sortie à traiter.
    on n'avancera pas sans !
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.
      0  0

  20. #20
    Membre très actif
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 433
    Par défaut
    j'arrive a faire marcher le script mais on me demande de le mettre dans une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    myfunction() {
    for carte in rtx3060 rtx3070 rtx3080 rx6700
    do
        # Traitement pour extraire le nombre de cartes
        nb_cg=$(curl "http://54.246.0.172:5000/$carte")
        echo "$carte:$nb_cg" >> text.txt # Avec guillemets
    done }
     
    comment appeler cette fonction et afficher le nombre de carte dans le fichier text.txt
      0  0

Discussions similaires

  1. Probléme d'affichage sur le output de mon script shell en bash
    Par maestro21 dans le forum Shell et commandes GNU
    Réponses: 18
    Dernier message: 12/10/2021, 11h56
  2. Affichage caractère ASCII dans script Shell
    Par kuja2053 dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 31/07/2011, 11h50
  3. Script shell boucle affichage
    Par ciou63 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 02/03/2010, 14h30
  4. Explication script shell
    Par crasho007 dans le forum Linux
    Réponses: 2
    Dernier message: 14/06/2004, 13h54
  5. Cron + terminal + script shell
    Par nicolas.pissard dans le forum Linux
    Réponses: 3
    Dernier message: 17/03/2004, 09h24

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