2016-07-12 9 views
2

그래서 텔넷을 통해 장치에 명령을 보내는 재 스크립트가 있습니다
명령은 다음과 같습니다.두 배 qoute/single qoute를 통해 가치를 보내시겠습니까?

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


나는 출력이

Tue Jul 12 17:10:51 WIB 2016 

같은 날짜하지만 그 대신 위의 출력은,이 결과에 예상치 못한 코드 실행이

date 

이 어떻게 올바른 명령을 보내려면 어떻게합니까 싶어? 출력에는 'date'문자열이 아닌 날짜 값이 포함되어야합니다.
감사합니다 :)

+1

mklement0 님, 고맙습니다. 사실, lod 언어로 nodemcu 펌웨어를 사용하고 있습니다. – Dika

답변

3

당신이 $(...)를 사용하여 대상 시스템에 명령 문자열을 전송하기 전에 date 유틸리티를 실행하는 로컬의 출력을 통합 할 경우, 배쉬의 command substitution :

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

주 전체 문자열이 인 방법으로을 큰 따옴표로 묶어 $(...)이 확장되었는지 확인하십시오. 전체 문자열이 단일 인용을, 아니 때문에 해석이 얼마나

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

참고 : 대상 시스템date를 실행하려면

, 쉘 명령을 실행할 수 루아의 os.execute()를 사용 이 경우 Bash가 필요하며 작은 따옴표를 사용하면 문자열이있는 그대로 전달됩니다.