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

Python Discussion :

Passage commande sous format Python


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2021
    Messages : 128
    Par défaut Passage commande sous format Python
    Bonjour,

    Je me permets de soumettre cette discussion car je n'arrive pas à intégrer cette commande (depuis un raspberry), dans un code python :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    value=100.33
    echo "PWR{voltage=\""used"\"}" $value | curl --data-binary @- http://localhost:9091/metrics/job/tb2
    le code python (simplifié) qui ne marche pas terrible :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import os
    value=100
    os.system('echo "PWR{voltage=\""used"\"}" $value | curl --data-binary @- http://localhost:9091/metrics/job/tb2')
    me retourne :
    text format parsing error in line 1: expected '"' at start of label value, found 'u'
    moi je suspect fortement que ma "$value" n'est pas bien interprétée dans le code... mais je n'ai pas trouvé la syntaxe correcte.

    Si vous avez une idée je suis preneur.

    Merci.

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Citation Envoyé par erwannoo Voir le message
    moi je suspect fortement que ma "$value" n'est pas bien interprétée dans le code...
    $value c'est du shell. En Python fatalement...

    Citation Envoyé par erwannoo Voir le message
    mais je n'ai pas trouvé la syntaxe correcte.
    Simple manipulation de strings...
    os.system('echo "PWR{voltage=\""used"\"}" %d | curl --data-binary @- http://localhost:9091/metrics/job/tb2' % value).

    Ensuite il y a format et/ou f-strings selon les préférences de chacun.

    Et enfin il y a subprocess spécifiquement dédié à ce genre d'actions.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2021
    Messages : 128
    Par défaut
    Bonjour,

    Merci d'avoir pris la peine de répondre.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 545
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 545
    Par défaut
    Pour moi, l'erreur me semble plutôt se produire au niveau du u de used et de l'échappement des '\' (en plus de value)
    à tester:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    os.system(f'echo "PWR{voltage=\\""used\\""}" {value} | curl --data-binary @- http://localhost:9091/metrics/job/tb2')

  5. #5
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 064
    Par défaut
    @erwanoo,

    Pourquoi vouloir faire du bash dans du python, vous retirez toute la portabilité que peut apporter Python, surtout que ce langage a tout ce qu'il faut pour faire un équivalent à ce que vous présentez en bash ?

    Un équivalent serait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import urllib.request
     
    value = 100.33
    data_string = f'PWR{{voltage="used"}}{value}'.encode('utf-8')
     
    url = "http://localhost:9091/metrics/job/tb2"
     
    req = urllib.request.Request(url, data=data_string, method='POST')
    with urllib.request.urlopen(req) as response:
        print(response.status)
    et ça fonctionne sur toutes les plateformes.

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2021
    Messages : 128
    Par défaut
    bonjour,

    car j'utilise une librairie python "pyvisa" qui me permet de récupérer les tensions / courant d'un équipement via protocol SCPI.
    Du coup je souhaite exploiter ces valeurs via des variables tension / courant qui seront transmises par la commande "curl".

    Mais oui passer ces commandes directement sous bash c'est plus simple, je confirme...

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 754
    Par défaut
    Citation Envoyé par erwannoo Voir le message
    Mais oui passer ces commandes directement sous bash c'est plus simple, je confirme...
    Dans ce cas, faire un script Python qui retourne des valeurs à exploiter depuis bash plutôt qu'appeler du bash depuis python serait plus "normal": on limite l'utilisation de python pour se retrouver le plus rapidement dans l'environnement qu'on maîtrise.

    Citation Envoyé par erwannoo Voir le message
    car j'utilise une librairie python "pyvisa" qui me permet de récupérer les tensions / courant d'un équipement via protocol SCPI.
    Dommage de ne pas vouloir apprendre à programmer avec python: utiliser un seul langage n'est pas indispensable mais ça simplifie pas mal.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 064
    Par défaut
    car j'utilise une librairie python "pyvisa" qui me permet de récupérer les tensions / courant d'un équipement via protocol SCPI.
    Cela affirme que vous pouvez faire du full python.

  9. #9
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2021
    Messages : 128
    Par défaut
    C'est bon avec cette syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    os.system('echo "PWR{voltage=\\"used\\"} %d | curl --data-binary @- http://localhost:9091/metrics/job/tb2' %value)
    Merci.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/02/2017, 19h51
  2. Réponses: 3
    Dernier message: 21/05/2014, 22h30
  3. Passages de commandes sous pgsql (en étant connecté superutilisateur)
    Par enchanté dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 29/10/2008, 15h51
  4. Réponses: 3
    Dernier message: 20/09/2004, 09h00
  5. commande sous DOS
    Par zorian dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 27/04/2004, 11h21

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