Exécuter une commande avec yana

Bonjour,
J'ai besoin de vos lumières :)
Je possède un rapberry pi b+ sur lequel j'ai monter une carte grovepi et yana.
Il me suffit donc de taper dans un terminal:
Sudo python /root/...../python/lumière.py
Pour claquer un relais de ma carte grovepi ( programmė dans lumière.py) et la lumière s'allume.
Comment faire exécuter cette commande a y ana?
J'ai essayer de rajouter une ligne dans le plugindisabled en php
Après array case responce "ma réponse à la commande de test est inutile"
J,ai mis $command = shell_exec("sudo python /root/..../python/Lumière.py")
Echo $command
Malheureusement rien ne se passe même un simple $command = shell_exec("sudo reboot")
Ne fonctionne pas, une idée ?
Merci d'avance .

Commentaires

  • salut,

    et sans sudo ?
  • Idem rien de se passe.
  • edited mars 2015
    Il faut que tu arrives à exécuter ta commande sans faire sudo.
    Je ne sais pas comment on fait en python, mais par exemple en C on peut utiliser setuid(0)
    https://git.idleman.fr/idleman/yana-server/blob/master/plugins/radioRelay/radioEmission.cpp#L188
    Avec les bons droits de positionnés une fois compilé
    sudo chown root:www-data
    /var/www/yana-server/plugins/radioRelay/radioEmission

    sudo
    chmod +s /var/www/yana-server/plugins/radioRelay/radioEmission

    ce qui permet à l'exécutable de s'exécuter comme si il était lancé par root ou sudo.
  • MZ_MZ_
    edited mars 2015
    Salut !

    C'est TRÈS facile à faire :

    Tu tapes la commande suivante dans ton termnal :
    "sudo visudo"

    Un fichier (sudoers) va être ouvert. C'est lui qui gère les permissions supplémentaires accordées à certains utilisateurs.
    Ensuite, sous les lignes :

    # User privilege specification
    root    ALL=(ALL:ALL) ALL

    Tu n'as plus qu'à mettre :

    www-data ALL=(ALL) NOPASSWD:/chemin/direct/vers/mon/script

    Et là, tu auras le droit de faire exécuter la commande "exec("sudo monscript");" à ton script PHP ! :D


    De rien d'avance ;)

  • MZ_MZ_
    edited mars 2015
    Enfin, ce que je viens de dire fonctionne si l'utilisateur qui gère ton serveur http s'appelle www-data ;
    c'est le cas par défaut pour Apache2.
    Si ton utilisateur est différent, bah tu le changes dans le fichier sudoers ! ;)

    (désolé du double-post, il semble y avoir un bug lors de l'édition d'un message, j'ai beau rajouter ce que je veux et cliquer sur "publier", le message reste identique)
Sign In or Register to comment.