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 :

script python dans html


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Electricien
    Inscrit en
    Mars 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electricien
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2014
    Messages : 5
    Points : 3
    Points
    3
    Par défaut script python dans html
    Bonsoir à tous

    Voilà mon problème.
    J'ai un script CGI en python qui fonctionne lorsque je suis dans un terminal.
    le voici :

    #!/usr/bin/env python
    from notsmb import notSMB
    import cgi
    import cgitb
    notSMB(1).i2c(0x32,[15,1,0,1],0)

    Ce même script ne fonctionne plus lorsque je le lance à partir d'une page html.

    Je me suis rendu compte que c'était dù à des problèmes de droit, en effet lorsque je le lance en " sudo python monscript.py ", cela fonctionne alors que si je le lance en " python monscript.py ", j'ai une erreur

    File "hello.py", line 8, in <module>
    notSMB(1).i2c(0x32,[15,1,0,1],0)
    IOError: [Errno 13] Permission denied

    Pour bien comprendre tout cela, voici les composants en jeux:
    Un raspberry pi Rev 2
    Une carte bv4627 ( http://doc.byvac.com/index.php5?title=Product_BV4627 )
    Tous les éléments pris séparément fonctionnent.
    Le Bus I2c : OK
    la commande en ligne de commande : OK
    le script cgi hello.py : OK (me retourne un joli hello world) .

    Me concernant, je me considère comme un novice sous linux, mais j'arrive à comprendre. (lorsque l'on m'explique longuement )

    Pour moi le seul soucis, c'est que je n'arrive pas à faire faire en root la ligne "notSMB(1).i2c(0x32,[15,1,0,1],0)"

    Merci de l'aide que vous pourrez m'apporter
    David

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 301
    Points : 6 781
    Points
    6 781
    Par défaut
    Salut,

    Le message d'erreur est clair.

    Que signifie notSMB(1).i2c(0x32,[15,1,0,1],0) ?

    Merci de ne pas répondre avec un lien vers une doc (que nous n'irons pas lire) mais de nous dire ce que tu sais, toi, de ce que fait exactement cette commande.

  3. #3
    Candidat au Club
    Homme Profil pro
    Electricien
    Inscrit en
    Mars 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electricien
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2014
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Salut,

    Le message d'erreur est clair.

    Que signifie notSMB(1).i2c(0x32,[15,1,0,1],0) ?

    Merci de ne pas répondre avec un lien vers une doc (que nous n'irons pas lire) mais de nous dire ce que tu sais, toi, de ce que fait exactement cette commande.
    Bonjour

    La carte BV4627 est une carte qui peut être commandée par des commandes sur bus I2c (carte 8 relais)
    d’après ce que je comprend :
    - cette carte à besoin d'un module qui se charge au début du script ( from notsmb import notSMB )
    - cette extension, je l'ai installée lors de la mise en place de la carte ( étant novice, j'ai suivi le tuto), peut être qu'il ne peux être démarré que par root ?

    En clair la commande veux dire, utiliser le bus i2c numéro 1 (raspberry rev1) ensuite 0x32 c'est le numéro de la carte sur le bus, 15 c'est le numéro du relais, 1 mise à 1 du relais, et le reste ????, mais cela fonctionne .

    je rappelle pour info que cette commande fonctionne dans un script lancé en root ( sudo python monscript.py ) mais pas en utilisateur pi, et c'est là ou je pense qu'il y à problème, mais je ne sais pas comment dire à la machine d'utiliser root ou autre utilisateur ayant les droits pour faire cette commande, où, autre point de vue, dire au module " notsmb " qu'il peux être utilisé par n'importe quel utilisateur (ou www-data), ce qui serait peut être plus sécuritaire.

    Merci en tout cas de m’aider à y voir plus clair.

    Cordialement
    David

  4. #4
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 478
    Points : 9 280
    Points
    9 280
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Juste une idée.

    Sous Linux, quand un utilisateur, qui a ouvert une session avec son compte sur le Linux, lance un programme, celui-ci a les mêmes privilèges que l'utilisateur.

    Alors, dans ton cas, il est possible que les connexions avec le matériel demandent des privilèges plus élevés. Ces connexions avec le matériel se trouvent sous forme de fichiers dans le répertoire /dev. Il faudrait donc connaître avec quelle fichier dev le programme veut communiquer, et ajuster (sous root) les privilèges d'accès à ce fichier pour qu'un programme utilisateur puisse s'y connecter.

    Il faut commencer par voir s'il est suffisant d'inscrire l'utilisateur dans le bon groupe (y compris le groupe root)?

    Si ça ne suffit pas, il faut essayer de modifier les droits ou la propriété du fichier dev. Ça semble simple sur le principe, mais ça peut être plus ou moins compliqué à faire selon le Linux: certains ont des mécanismes qui remettent en permanence les droits initiaux.

  5. #5
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 301
    Points : 6 781
    Points
    6 781
    Par défaut
    cette extension, je l'ai installée lors de la mise en place de la carte ( étant novice, j'ai suivi le tuto), peut être qu'il ne peux être démarré que par root ?
    Le problème peut-être là aussi. Sous Linux, lors d'une installation, certains droits nécessitent parfois d'être fixés.

    Dans le cas d'une installation par un paquet d'une distribution (.deb, .rpm, etc) le créateur du paquet a prévu cela, par exemple avec un fichier postinst chez Debian and friends et qui s'exécutera à l'installation.

    Si tu as fait une install à la main, il faudra peut-être fixer ces permissions toi-même.

    Il est où le tuto d'installation ?

  6. #6
    Candidat au Club
    Homme Profil pro
    Electricien
    Inscrit en
    Mars 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electricien
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2014
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonjour
    Merci pour vos réponses.

    tyrtamos, je testerais ce soir. Mettre les mains dans le cambouis c'est la meilleure façon d'apprendre.
    Par contre je crois qu'avant tout cela, je vais faire une sauvegarde de ma carte SD (oups encore une chose que je n'ai pas encore apprise )

    VinsS, concernant le tuto de l'installation, voici le lien: http://www.pichips.co.uk/index.php/RPi_Not_smBUS

    En voici la partie principale :

    Installation
    sudo apt-get install python-dev (takes quite a while)
    mkdir notsmb
    Download the notsmb_1_0.zip file into that directory (file name may be different)
    wget http://www.byvac.com/downloads/sws/notsmb_1_0.zip
    unzip notsmb_1_0.zip
    sudo python setup.py install

    Cordialement
    David

  7. #7
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 301
    Points : 6 781
    Points
    6 781
    Par défaut
    Il semble qu'il faille ajouter aussi l'utilisateur ic2.

    En détail ici: http://skpang.co.uk/blog/archives/575

  8. #8
    Candidat au Club
    Homme Profil pro
    Electricien
    Inscrit en
    Mars 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electricien
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2014
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonsoir VinsS

    J'ai effectivement ajouté pi au groupe i2c lors des premiers test sur le bus I2C.
    Merci du lien que je vais garder.
    Il va me falloir comprendre ce que m'a écris tyrtamos et l'appliquer, mais je vais d'abord faire une sauvegarde de la carte SD du Raspberry. ( super facile )
    Je commence à avoir trop de petite choses qui marchent indépendamment et que je ne voudrais pas perdre.

    Bonne soirée
    David

  9. #9
    Candidat au Club
    Homme Profil pro
    Electricien
    Inscrit en
    Mars 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electricien
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2014
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par dadou013 Voir le message
    J'ai effectivement ajouté pi au groupe i2c lors des premiers test sur le bus I2C.
    Bonsoir à tous

    Alors voici le résultat des courses.
    J'ai du rajouter www-data au groupe root pour que cela fonctionne, " sudo adduser www-data root "

    Tout cela pour domotiser une chaudière .

    Bon maintenant à la suite ...

    Merci de votre aide.
    David

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

Discussions similaires

  1. Code python dans html
    Par Loenix dans le forum Réseau/Web
    Réponses: 2
    Dernier message: 29/11/2010, 13h31
  2. Intégrer du scripting Python dans un autre programme
    Par ProgVal dans le forum Interfaçage autre langage
    Réponses: 3
    Dernier message: 03/07/2010, 13h52
  3. résultat d'un script python dans java
    Par trin86 dans le forum Général Java
    Réponses: 8
    Dernier message: 03/05/2009, 19h35
  4. Intégrer un script python dans une page Web
    Par Mysti¢ dans le forum Réseau/Web
    Réponses: 4
    Dernier message: 02/11/2006, 10h20
  5. Interpreter un script python dans un prog python
    Par romeo9423 dans le forum Général Python
    Réponses: 3
    Dernier message: 01/12/2005, 16h16

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