fhem.pl Kommando auf telnet Port

Begonnen von amenomade, 23 August 2017, 15:20:28

Vorheriges Thema - Nächstes Thema

amenomade

Ich möchte gern per shell ein Reading setzten, das aber viele Leerzeichen enthält. Wie kann ich es in einem Befehl packen, ohne dass es als mehrere "cmd" interpretiert wird?
perl fhem.pl localhost:7072 "setreading dutest testreading $wert" wo $wert diese mehrere durch Leerzeichen getrennte Wörter enthält, ergibt viele "Unknown command" und nur das erste wird als Reading gesetzt.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

betateilchen

Bei mir funktionieren folgende beiden Varianten problemlos:


perl fhem.pl localhost:7072 "setreading dutest testreading wert1 wert2 wert3"
echo "setreading dutest testreading2 wert1 wert2 wert3" |telnet localhost 7072


Beschreibe doch mal etwas genauer, was Du vorhast und wie das shell skript bei Dir aussieht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

amenomade

Naja. Anscheinend sind nicht die Leerzeichen das Problem, sondern Zeilenumbrüche
wert="wert1
wert2
wert3"
perl fhem.pl localhost:7072 "setreading dutest testreading $wert"

Unknown command wert2, try help.
Unknown command wert3, try help.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

pi@raspberrypi:/opt/fhem $ wert="wert1
> wert2
> wert3"
pi@raspberrypi:/opt/fhem $ echo $wert
wert1 wert2 wert3
pi@raspberrypi:/opt/fhem $ perl fhem.pl localhost:7072 "setreading dutest fhem_text $wert"
Unknown command wert2, try help.
Unknown command wert3, try help.
pi@raspberrypi:/opt/fhem $ ^C
pi@raspberrypi:/opt/fhem $
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

betateilchen

#4

wert="wert4
wert5
wert6"

echo -E setreading dutest testreading $wert | sed 's/\n/ /g' | telnet localhost 7072
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

amenomade

Das shell Skript soll die Liste von anstehenden Updates in einem Reading schreiben, wie hier vom User gewünscht: https://forum.fhem.de/index.php/topic,75692.0.html
VORSICHT: nicht machen, da er dann die UPD als Kommandos interpretiert, und startet ein update!

#!/bin/bash
updatesfhem=$(curl -sS http://fhem.de/fhemupdate/controls_fhem.txt| diff - /opt/fhem/FHEM/controls_fhem.txt  |grep "> UPD" )
perl fhem.pl localhost:7072 "setreading dutest FHEM $updatesfhem"


Mit deinem Befehl ersetzt Du aber die Zeilenumbrüche durch Leerzeichen. Nicht so schön, aber vielleicht für den User OK. Werde fragen.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

betateilchen

Zitat von: amenomade am 23 August 2017, 15:54:00
VORSICHT: nicht machen, da er dann die UPD als Kommandos interpretiert, und startet ein update!

quatsch.

Zitat von: amenomade am 23 August 2017, 15:54:00
Nicht so schön, aber vielleicht für den User OK. Werde fragen.

Kann der nicht selber fragen ???
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

amenomade

Quatsch? Probier es dann mal ;) Du bist gewarnt (und hast bestimmt Testinstallationen)

Ich habe mit userReadings und qx(curl...) probiert. Es wird sowieso nicht mit Zeilenumbrüche ins Reading gesetzt. Dann... mal sehen, was der User sagt.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus