2016-07-12 15 views
2

So habe ich ein Asch-Skript, das Befehl an das Gerät über Telnet senden
Der Befehl sieht so aus.
Wert über Doppel-Qoute/Einzel-Qoute senden?

echo 'dofile("lcdprint.lua").lcdprint("date")' | telnet 192.168.1.23 23 

Ich mag die Ausgabe Datum wie diese

Tue Jul 12 17:10:51 WIB 2016 

Aber statt über Ausgang, der Code läuft unerwartet mit diesem Ergebnis

date 

Wie finde ich den richtigen Befehl senden? Die Ausgabe sollte Datumswert enthalten, nicht 'Datum' Zeichenfolge.
Thankyou :)

+1

Vielen Dank mklement0, es funktioniert! In der Tat verwende ich nodemcu Firmware mit Lua-Sprache – Dika

Antwort

3

Wenn Sie die Ausgabe von lokal Ausführung des date Dienstprogramm integrieren möchten, bevor die Befehlsfolge an den Zielrechner senden, verwenden $(...), Bash command substitution:

echo "dofile('lcdprint.lua').lcdprint('$(date)')" | telnet 192.168.1.23 23 

Hinweis Wie die gesamte Zeichenfolge ist doppelt notiert, um sicherzustellen, dass $(...) erweitert ist.

Wenn Siedateauf dem Zielcomputer ausgeführt werden soll, verwenden Sie Lua os.execute() einen Shell-Befehl auszuführen:

echo 'dofile("lcdprint.lua").lcdprint(os.execute("date"))' | telnet 192.168.1.23 23 

Beachten Sie, wie die gesamte Zeichenfolge einfachen Anführungszeichen ist, weil keine Interpretation In diesem Fall wird die Verwendung von Bash benötigt, und die Verwendung von einfachen Anführungszeichen stellt sicher, dass die Zeichenfolge unverändert übergeben wird.