Systembefehl lässt sich nicht ausführen

Begonnen von alexmetz, 07 Januar 2014, 20:08:13

Vorheriges Thema - Nächstes Thema

alexmetz

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.
FHEM auf RaspberryPi 4
Homematic

Wernieman

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?
- 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

alexmetz

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.
FHEM auf RaspberryPi 4
Homematic

Wernieman

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
- 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