FHEM Forum

FHEM - Hardware => Einplatinencomputer => Thema gestartet von: alexmetz am 07 Januar 2014, 20:08:13

Titel: Systembefehl lässt sich nicht ausführen
Beitrag von: alexmetz am 07 Januar 2014, 20:08:13
Hallo zusammen,

ich habe ein Problem ein Systemskript aus fhem aufzurufen. Zweck ist die Steuerung meines AV-Receivers.

Hierzu habe ich in /usr/bin das Skript avrcom (Rechte 755) mit folgendem Inhalt:
#! /bin/sh
# /usr/bin/avrcom

#touch /var/lock/avr2807

case "$1" in
  cmd)
    if [ -n "$2" ]; then
      /usr/bin/screen -dmS AVR2807 /dev/ttyUSB0 9600
      /usr/bin/screen -S AVR2807 -X stuff "$2\r"
      /usr/bin/screen -S AVR2807 -X kill
    else
      echo "Usage: $0 $1 {command}"
    fi
  ;;
  *)
    echo "Usage: $0 {start (log) | stop | restart | send|cmd command}"
    exit 1
  ;;
esac


Wenn ich nun das Skript aus einem Terminal heraus mit "avrcom cm MUON" aufrufe, schaltet er meinen Receiver stumm.

Allerdings schaffe ich es nicht, das Skript aus fhem aufzurufen.

Ich habe folgendes notify in meiner fhem.cfg
define AVR2807_n notify AVR2807.* { AVRcom("%") }

und folgende sub in meiner 99_myUtils.pm:
sub
AVRcom
{
  my $message = $_[0];
  my $ret = "";
  my $subject = "avrcom cmd ".$message;
  $ret .= system("$subject");
  $ret =~ s,[\r\n]*,,g;        # remove CR from return-string
  Log 1, "AVRcom sent: $subject";
}


Wenn ich nun also in fhem "set AVR2807 MUON" mache, dann ruft das notify die Funktion mit dem Parameter MUON auf. Dass das klappt, sehe ich an dem Logeintrag. Aber er schaltet den Receiver nicht.

Habe bereits versucht:
- avrcom mit Pfad aufzurufen, also "/usr/bin/avrcom"
- die Datei ins ./FHEM-Verzeichnis zu den andern Skripten zu kopieren und .sh anzuhängen.
- ein sudo voranzustellen

Leider alles erfolglos.

Habe auch überlegt, ob es vielleicht an fehlenden Rechten von fhem liegt, weiß aber nicht, wie ich fhem als root starten kann. Eine entsprechende Datei wie bei der Fritzbox gibt es nicht.

Vielleicht hat einer ne Idee.

Danke und Gruß,

Alex.
Titel: Antw:Systembefehl lässt sich nicht ausführen
Beitrag von: Wernieman am 21 Januar 2014, 10:47:41
1. Ich würde es Sicherheitshalber immer mit Pfad aufrufen, da eventuell die "Umgebung" nicht komplett ist, wenn Du unter fhem ein Programm startest (ähnlich wie Scripte für cron)
2. Logge Dir mal im Script mit, welche Parameter übergeben werden. Wird überhaupt der Richtige Parameter übergeben?
ala "echo $@ >>/tmp/logfile"
3. Unter welchem user startest Du das Programm auf der Console?
Titel: Antw:Systembefehl lässt sich nicht ausführen
Beitrag von: alexmetz am 21 Januar 2014, 13:39:24
Danke für die Hilfe. Es geht mittlerweile indem ich Fhem als root laufen lasse. Ist zwar nicht sehr elegant, aber ich kenne mich mit der Rechteverwaltung in Linux zu wenig aus.

Gruß,
Alex.
Titel: Antw:Systembefehl lässt sich nicht ausführen
Beitrag von: Wernieman am 21 Januar 2014, 14:00:13
Wenn Du fhem auf einem raspi oder fritzBox laufen lässt ist es so O.K.. Wenn dagegen auf einem "PC", der noch andere Dinge tut, dann solltest Du dagegen ..

kann Dir gerne dabei helfen, wenn gewünscht