Rechteproblem unter Jessie *gelöst*

Begonnen von RitterSport, 13 Oktober 2016, 16:19:35

Vorheriges Thema - Nächstes Thema

RitterSport

Hallo Zusammen.

Ich habe die folgende Fehlermeldung im Log:" sudo: no tty present and no askpass program specified"

Wenn ich in der Konsole das folgende eingebe
sudo nice -n -5 ./rollo 0 1 0 1 runter
funktioniert es. Die Dateil rollo liegt unter /home/pi/Dooya/ und hat per "sudo chmod 755 /home/pi/Dooya/rollo" oder auch 777 seine Rechte bekommen. In fhem bekomme ich aber die Fehlermeldung im Log und diese hier:
{system("sudo nice -n -5 /home/pi/Dooya/rollo 0 0 1 0 runter &");;}: -1  2016-10-13 14:39:23

groups fhem liefert : fhem : dialout tty audio

Leider verliessen mich meine rudimentären try and error Ideen nun. Was kann ich machen?

Danke

Wernieman

1. Unter welchem User hast Du (auf der Konsole) getestet?
2. Wie sieht die erste Zeile Deinen Scriptes aus?
3. Gibt es einen besonderen Grund, das Du sudo und nice verwendest?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

RitterSport

Danke schonmal für die Rückfragen.
Da oute ich mich mal als derjenige der keine Ahnung hat :-)

1. In der Konsole bin ich angemeldet als pi, somit ist das ja schon unterschiedlich zu dem Aufruf als fhem
2.Das gesamte Script ist dieses hier:
#include <wiringPi.h>
#include <stdio.h>
#include <string.h>


// 28 Stellen = ID
// 4 Stellen = Kanal
// 8 Stellen = Befehl

// nice -n -19 ./rollo_prg 0 1 0 0 runter

int send_0(){
          digitalWrite (0, HIGH) ;
          delayMicroseconds (320) ;
          digitalWrite (0,  LOW) ;
          delayMicroseconds (600) ;
          return 0;
}

int send_1(){
          digitalWrite (0, HIGH) ;
          delayMicroseconds (700) ;
          digitalWrite (0,  LOW) ;
          delayMicroseconds (270) ;
          return 0;
          }

int send_init(){
          digitalWrite (0, HIGH) ; delayMicroseconds (5000) ;
          digitalWrite (0,  LOW) ; delayMicroseconds (1500) ;
          return 0;
          }

int main (argc, argv)
        int argc;
        char *argv[];
        {
          int i;
          wiringPiSetup ();
          pinMode (0, OUTPUT);
          while (i < 10) {
                send_init();

                i++;

                //ID
                send_0();send_0();send_0();send_1();send_1();send_0();send_1();
                send_1();send_0();send_0();send_1();send_0();send_0();send_1();
                send_0();send_0();send_0();send_1();send_1();send_1();send_1();
                send_1();send_0();send_0();send_1();send_1();send_0();send_1();

                // kanal 1 bis 128 binär
                if (strcmp(argv[1],"0") == 0) { send_0(); }
                if (strcmp(argv[1],"1") == 0) { send_1(); }
                if (strcmp(argv[2],"0") == 0) { send_0(); }
                if (strcmp(argv[2],"1") == 0) { send_1(); }
                if (strcmp(argv[3],"0") == 0) { send_0(); }
                if (strcmp(argv[3],"1") == 0) { send_1(); }
                if (strcmp(argv[4],"0") == 0) { send_0(); }
                if (strcmp(argv[4],"1") == 0) { send_1(); }

                // Funktion wählen
                if (strcmp(argv[5],"runter") == 0) { send_0();send_0();send_1();send_1();send_0();send_0();send_1();send_1();}
                if (strcmp(argv[5],"hoch") == 0)   { send_0();send_0();send_0();send_1();send_0();send_0();send_0();send_1();}
                if (strcmp(argv[5],"stop") == 0)   { send_0();send_1();send_0();send_1();send_0();send_1();send_0();send_1();}
                if (strcmp(argv[5],"lernen") == 0) { send_1();send_1();send_0();send_0();send_1();send_1();send_0();send_0();}
                //pause beim senden
                digitalWrite (0,  LOW) ; delay (50) ;
          }
  return 0 ;
}

3. Warum es als sudo und warum genau der Befehl nice ist mir nicht klar, ich habe es nachgebaut aus:https://forum.fhem.de/index.php/topic,43548.msg500172.html#msg500172
Der Befehl nice hat was mit dem timing zu tun?


digiart

Deine FHEM Instanz läuft vermutlich unter dem User fhem.

Also müsste in der sudoers-Datei auch ein Eintrag für den User fhem existieren.

Wen nicht, dann müsstest du mit sudo visudo die Datei bearbeiten und einen Eintrag für fhem setzen.

Wenn es danach noch immer nicht funktioniert, gibt es noch (in dieser Datei) den Parameter REQUIRETTY
Anfragen ausserhalb der Threads (PN, Mail o.ä.) werden ignoriert!

RitterSport

Danke, genau das fehlte.

# User privilege specification
root ALL=(ALL:ALL) ALL
fhem    ALL=(ALL:ALL) ALL
#includedir /etc/sudoers.d
fhem ALL=(ALL) NOPASSWD: A

Wernieman

Du weist, das Du fhem damit praktisch komplette root-rechte gegeben hast? Strichwort: Security?

Probiere doch mal, ob Du es als user fhem laufen lassen kannst (ohne root-Rechte und sudo)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html