cgi script Zugriff auf rfcomm1

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo zusammen,

    folgende Problem:
    Ich möchte über einen Web-Server und ein cgi script in python einen Befehl an ein Bluetooth Gerät senden.

    * Das Gerät ist gepaart und an /dev/rfcomm1 angeschlossen
    * www-data wurde der Gruppe dialout hinzugefügt
    * das cgi-script funktioniert, wenn ich es als pi starte oder mit sudo -u www-data send2BT.cgi ohne Probleme
    * das script läuft wenn über die Website angetriggert genau bis zur Zeile

    [...]

    bluetoothSerial = serial.Serial( "/dev/rfcomm1", baudrate=9600 )

    [...]


    diese scheint einen Fehler zu erzeugen, weil das script danach stoppt.

    wer hat eine Idee?

    Danke im Voraus!

  • Das ist ja das Problem - wenn ich den Prozess in der Shell starte mit richtigem user etc. bekomme ich keine Fehler-Meldung (zuvor habe ich so herausbekommen, dass /dev/rfcomm1 www-data nicht gestattet war). Das CGI script scheint nichts zu loggen - ich bin auch überfragt, ob man das irgendwo anschalten kann.

    Einmal editiert, zuletzt von beejayf (4. November 2015 um 22:20)

  • Hallo,

    es ist zwar nicht direkt eine Lösung, aber Python-Web-Skripte lässt am heutzutage per WSGI laufen. CGI ist arg oldschool. Und das debugging sollte dann auch einfacher sein.

    Zitat

    ich bin auch überfragt, ob man das irgendwo anschalten kann.


    hast du mal in den Logs des Servers nachgeschaut? Beim Apache wäre das das `error.log` (liegt, wenn ich das richtig im Kopf habe, unter `/var/log/apache`)

    Gruß, noisefloor

  • Klasse - das hat auf alle Fälle weitergeholfen - im /var/log/apache2/error.log steht genau der Fehler, den ich vor dem setzen der gruppe "dialout" für www-data bekommen habe:

    serial.serialutil.SerialException: could not open port /dev/rfcomm1: [Errno 13] Permission denied: '/dev/rfcomm1'

    d.h. doch aber, dass es nicht ausreichend war www-data die rechte zu geben. Bis jetzt war ich der Meinung, dass cgi scripte mit dem user www-data ausgeführt werden, oder nicht?

    WSGI schaue ich mir an - aber für dieses Projekt fühlt es sich an, als ob die Berechtigungen die letzte Hürde wären.

    Weiß jemand, welche(n) user für das Ausführen von python scripten per cgi verwendet werden?

  • Es fehlen entsprechende Rechte, schau dir mal das hier an, das könnte dir helfen:

    mobby
    26. April 2015 um 23:23

    lg kobold254

  • Danke für den Hinweis - im Artikel steht als Lösung der Klassiker "chmod u+x script.py" ja, damit müsste es auch gehen, aber setuid ist schon eine gewaltige Kanone für den kleinen Spatzen ;)

    Ich würde lieber den User, mit dem cgi ausgeführt wird die Rechne an rfcomm1 geben - das Problem ist nur, ich weiß nicht welchen user ich hinzufügen soll...

    Hat jemand eine Idee?

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!