Forum Programmation.shell Introduire un script python dans un script shell

Posté par . Licence CC by-sa.
Tags : aucun
0
3
avr.
2019

Bonjour…
j'ai fait un script python et je l'exécute avec un autre script shell
est ce que c'est possible d'introduire le python monpython.py dans un un seul script shell ou bash.

script shell:

#!/bin/bash
#@mino60 
python /tmp/monpython.py &
exit 0

monpython.py:
h ttps://pastebin.com/nFrRjtqG

h ttps://i.postimg.cc/SsWC0ZhT/screenshot-927.png

  • # ma solution

    Posté par (page perso) . Évalué à 2.

    Bonjour mino60,

    si je comprends bien, tu voudrais écrire du python dans un script bash. Voici une solution :

    #!/bin/bash
    
    echo "#!/usr/bin/env python3
    print('Je suis un serpent')
    exit()" > script.py
    
    chmod +x script.py
    
    ./script.py
    
    exit 0
    

    Et le résultat :

    $ ./essai.sh
    Je suis un serpent
    $ 
    
  • # Si tu n’as pas besoin de stdin

    Posté par . Évalué à 2. Dernière modification le 03/04/19 à 13:55.

    echo "print('hello')" | python
    
  • # avec cat << EOF

    Posté par (page perso) . Évalué à 3.

    en utilisant l'astuce cat << EOF

    #!/bin/sh
    
    echo "script python ______________>"
    cat << EOF | python
    
    # This program adds two numbers
    
    num1 = 1.5
    num2 = 6.3
    
    # Add two numbers
    sum = float(num1) + float(num2)
    
    # Display the sum
    print('The sum of {0} and {1} is {2}'.format(num1, num2, sum))
    
    num = 7
    
    # uncomment to take input from the user
    #num = int(input("Enter a number: "))
    
    factorial = 1
    
    # check if the number is negative, positive or zero
    if num < 0:
            print("Sorry, factorial does not exist for negative numbers")
    elif num == 0:
            print("The factorial of 0 is 1")
    else:
            for i in range(1,num + 1):
                    factorial = factorial*i
            print("The factorial of",num,"is",factorial)
    EOF
    
    
    echo voili voilou

    ce qui donne:

    script python ______________>
    The sum of 1.5 and 6.3 is 7.8
    ('The factorial of', 7, 'is', 5040)
    voili voilou

    J'ai pris des exemples au pif

    • [^] # Re: avec cat << EOF

      Posté par . Évalué à 2.

      merci infiniment votre astuce cat << EOF marche tres bien

    • [^] # Re: avec cat << EOF

      Posté par . Évalué à 3. Dernière modification le 03/04/19 à 19:30.

      en utilisant l'astuce

      Pourquoi astuce? :-)

      Il y a deux choses à améliorer:

      cat << EOF | python
      …

      Est plutôt

      python <<'EOF'

      Pas de cat et apostrophes simples autour du EOF dans l'ouverture du document ad hoc. Les apostrophes simples disent au shell de ne pas toucher au contenu – pas de remplacement de variables notamment. Par contre la marque de fin reste EOF sans apostophes simples.

      • [^] # Re: avec cat << EOF

        Posté par (page perso) . Évalué à 3.

        Pourquoi astuce? :-)

        technique du «here-doc».

        Pas de cat

        Le principe se comprend mieux avec cat ( enfin, j'espère ).

        et apostrophes simples autour du EOF dans l'ouverture du document ad hoc

        En pratique, c'est utilisé pour, justement, utiliser des variables du shell. Sinon, l'intérêt est limité.

        • [^] # Re: avec cat << EOF

          Posté par . Évalué à 2.

          En pratique, c'est utilisé pour, justement, utiliser des variables du shell. Sinon, l'intérêt est limité.

          Ça dépend des pratiques, et ça dépend des occurrences du caractère $ ou des contr'apostrophes dans le document.

          Dans ma pratique, j'utilise très souvent la forme “qui ne remplace pas les variables.”

  • # Utilisateurs yahoo

    Posté par . Évalué à 2.

    Salut :)

    Je ne sais pas ce que tu farfouille encore, mais usurper (ou forger) des adresses mails, ce n'est pas ce que je conseillerai le plus.

    Mon conseil : ne joue pas aux script-kiddies si tu ne maîtrises rien. ;)

  • # Une version avec read

    Posté par . Évalué à 1.

    read -r -d '' WINRMCMD <<-EOF 
    import winrm, sys
    s = winrm.Session('${instance_ip}', auth=('Admin','${instance_pass}'))
    r = s.run_cmd('hostname')
    sys.exit(r.status_code)
    EOF
    
    python -c "${WINRMCMD}"
    
    • [^] # Commentaire supprimé

      Posté par . Évalué à 0. Dernière modification le 05/05/19 à 11:36.

      Ce commentaire a été supprimé par l'équipe de modération.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.