[FHZ] FHEM 4.1: Fehlermeldung bei fhem-Aufruf in Shellscript

Begonnen von JuergenL, 09 August 2009, 21:27:11

Vorheriges Thema - Nächstes Thema

JuergenL

                                               

Hi,

ich einen Shellscript, dass vom Dämmerungssensor aufgerufen wird, habe
ich folgende Sequenz stehen:

fhem='/usr/local/bin/fhem.pl 7072'
[...]
  # Beschattungssteuerung nachts ausschalten
  $fhem "
    { if($value{"${scr}_bs.eg.wz.f_on"}) { fhem 7072 "delete ${scr}
_bs.eg.wz.f_on" }
    { if($value{"${scr}_bs.eg.wz.f_off"}) { fhem 7072 "delete ${scr}
_bs.eg.wz.f_off" }
    { if($value{"${scr}_bs.eg.wz.fel_on"}) { fhem 7072 "delete ${scr}
_bs.eg.wz.fel_on" }
    { if($value{"${scr}_bs.eg.wz.fel_off"}) { fhem 7072 "delete ${scr}
_bs.eg.wz.fel_off" }
    quit"

Und jedes Mal bekomme ich die Fehlermeldung:

FHZ> FHZ> FHZ> Bye...
Usage:
as server: fhem configfile
as client: fhem [host:]port cmd

Woran kann das liegen?
Ich werde jetzt noch den host-Namen mit reinschreiben, aber lt. Usage
sollte es ohne gehen?!

Grüße,
Jürgen


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHEM users on Linux" group.
To post to this group, send email to fhem-users@googlegroups.com
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en
-~----------~----~----~----~------~----~------~--~-

Dr. Boris Neubert

                                             

Hallo,

Juergen Lennefer wrote:
>   # Beschattungssteuerung nachts ausschalten
>   $fhem "
>     { if($value{"${scr}_bs.eg.wz.f_on"}) { fhem 7072 "delete ${scr}
> _bs.eg.wz.f_on" }
>     { if($value{"${scr}_bs.eg.wz.f_off"}) { fhem 7072 "delete ${scr}
> _bs.eg.wz.f_off" }
>     { if($value{"${scr}_bs.eg.wz.fel_on"}) { fhem 7072 "delete ${scr}
> _bs.eg.wz.fel_on" }
>     { if($value{"${scr}_bs.eg.wz.fel_off"}) { fhem 7072 "delete ${scr}
> _bs.eg.wz.fel_off" }
>     quit"


ich meine, dass Du die Anfuehrungszeichen und die Zeilenenden mit \
maskieren muss, damit sie nicht bereits von der Shell interpretiert
werden. Am schnellsten kannst Du das testen, wenn Du $fhem auf ein
Shell-Skript zeigen laesst, das die Argumente auf dem Bildschirm ausgibt.

Gruesse,
Boris


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHEM users on Linux" group.
To post to this group, send email to fhem-users@googlegroups.com
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en
-~----------~----~----~----~------~----~------~--~-
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

rudolfkoenig

                                                   

Hier sind gleich mehrere Sachen schief:

- Der riesen-fhem Aufruf ($fhem "...") erzeugt den erwähnten Fehler,
weil durch die wiederholte Verwendung vom doppelten Hochkomma (") fhem
gleich viele kurze Argumente bekommt statt einen langen. Empfehlung:
innen die einfachen Hochkomma (') verwenden.
- Die Funktion fhem (nicht das Programm) braucht keinen Portnummer als
Parameter
- Es ist nicht möglich, ein Kommando mit mehreren perl {} Abschnitten
zu schreiben, diese müssen alle in einem Abschnitt kommen
- quit zum Schluss ist nicht nötig, und da es nicht durch ; getrennt
ist, wird es den Parser auch noch stören.
- Kann man das Ganze nicht durch ein Regexp (delete ${scr}
_bs_eg.wz.f.*) erschlagen?

Gruss,
  Rudi
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHEM users on Linux" group.
To post to this group, send email to fhem-users@googlegroups.com
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en
-~----------~----~----~----~------~----~------~--~-

JuergenL

                                               

Hi Boris,

die Umbrüche sind im Original nicht drin, die hat Goole
reingebastelt ;-(

Das mit dem Maskieren versuche ich mal. Danke.

On Aug 10, 8:48 am, "Dr. Boris Neubert" wrote:
[...]
> ich meine, dass Du die Anfuehrungszeichen und die Zeilenenden mit \
> maskieren muss, damit sie nicht bereits von der Shell interpretiert
> werden. Am schnellsten kannst Du das testen, wenn Du $fhem auf ein
> Shell-Skript zeigen laesst, das die Argumente auf dem Bildschirm ausgibt.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHEM users on Linux" group.
To post to this group, send email to fhem-users@googlegroups.com
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en
-~----------~----~----~----~------~----~------~--~-

JuergenL

                                               

> - Der riesen-fhem Aufruf ($fhem "...") erzeugt den erwähnten Fehler,
> weil durch die wiederholte Verwendung vom doppelten Hochkomma (") fhem
> gleich viele kurze Argumente bekommt statt einen langen. Empfehlung:
> innen die einfachen Hochkomma (') verwenden.

OK, versuche ich.

> - Die Funktion fhem (nicht das Programm) braucht keinen Portnummer als
> Parameter

Hatte ich zuerst auch so, aber die Meldung hat mich animiert, den Port
einzutragen.

> - Es ist nicht möglich, ein Kommando mit mehreren perl {} Abschnitten
> zu schreiben, diese müssen alle in einem Abschnitt kommen

Ähhh, ja ...

> - quit zum Schluss ist nicht nötig, und da es nicht durch ; getrennt
> ist, wird es den Parser auch noch stören.

Hmmm, bei älteren Versionen war es aber wohl notwendig, sonst wäre es
nicht drin. Aber umso besser ...

> - Kann man das Ganze nicht durch ein Regexp (delete ${scr}
> _bs_eg.wz.f.*) erschlagen?

Hmm, geht das schon bei 4.1? Ich versuchs einfach ...

Gruss,
Jürgen
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHEM users on Linux" group.
To post to this group, send email to fhem-users@googlegroups.com
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en
-~----------~----~----~----~------~----~------~--~-

JuergenL

                                               

> > - Kann man das Ganze nicht durch ein Regexp (delete ${scr}
> > _bs_eg.wz.f.*) erschlagen?
>
> Hmm, geht das schon bei 4.1? Ich versuchs einfach ...

Geht noch nicht bei 4.1:

delete daemmerung.sh_bs.eg.wz.f*
Please define daemmerung.sh_bs.eg.wz.f* first

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHEM users on Linux" group.
To post to this group, send email to fhem-users@googlegroups.com
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en
-~----------~----~----~----~------~----~------~--~-

rudolfkoenig

                                                   

> Geht noch nicht bei 4.1:

Der ist ja auch schon 2 Jahre alt :), und dieser feature kam mit 4.3,
ein Jahr spaeter :)

> delete daemmerung.sh_bs.eg.wz.f*

Sollte auch "delete daemmerung.sh_bs.eg.wz.f.*" heissen (sonst loescht
es nur welche mit vielen f's hinten :)
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHEM users on Linux" group.
To post to this group, send email to fhem-users@googlegroups.com
To unsubscribe from this group, send email to fhem-users+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/fhem-users?hl=en
-~----------~----~----~----~------~----~------~--~-