netcat을 통해 Fluke 1620a에서 데이터 캡처

netcat을 통해 Fluke 1620a에서 데이터 캡처

Fluke DewK 1620a 온습도계에서 온도 및 습도 데이터를 추출하고 온도/습도 판독값을 로그에 기록하려고 합니다. 간단한 "nc 1.2.3.4 10001"을 사용하여 netcat을 통해 장치에 연결하고 몇 가지 기본 명령을 실행하고 출력을 받을 수 있습니다. 이제 명령을 보내고 출력을 파일에 기록하는 스크립트에 넣을 수 있는 명령줄을 작성하고 싶습니다.

명령줄에서 다음 명령을 실행하면

$ echo "read?" | nc -v -i 1 1.2.3.4 10001

나는 받았다:

Connection to 1.2.3.4 10001 port [tcp/scp-config] succeeded!
76.55,44.4,72.06,48.0

-i 간격이 지나면 연결이 닫히고 프롬프트가 온도 및 습도 데이터를 덮어씁니다.

그런 다음 다음을 시도했습니다.

echo "read?" | nc -v -i 1 1.2.3.4 10001 >> test.out 2>&1

명령이 실행되고 "test.out" 파일에는 각 실행에 대한 다음 내용만 포함됩니다.

Connection to 1.2.3.4 10001 port [tcp/scp-config] succeeded!

온도 및 습도 판독값은 파일에 포함되지 않습니다. 자세한 내용을 추가하는 것은 도움이 되지 않는 것 같습니다.

나는 아마도 분명한 것을 놓치고 있다는 것을 알고 있지만 그것을 볼 수 없습니다. 어떤 도움이라도 대단히 감사하겠습니다.

답변1

문제가 전혀 보이지 않아 Fluke가 실제로 반응하는지 궁금합니다.

이 두 netcat 스크립트는 구문에 문제가 없음을 보여줍니다.

섬기는 사람:

# server
while true; do date; sleep 1; done | nc -l 10001

고객:

# client
echo "hello?" | nc -v -i1 localhost 10001 >> test.out 2>&1

확인해 보세요

[sri@tidevel netlink]$ cat test.out 
Ncat: Version 6.45 ( http://nmap.org/ncat )
Ncat: Connected to 127.0.0.1:10001.
Wed Nov  5 13:54:06 EST 2014
Wed Nov  5 13:54:07 EST 2014
Ncat: Idle timeout expired (1000 ms).

이제 모든 작업이 완료되었으며 실제로 Fluke로부터 응답을 받고 있는지 확인했습니다. Fluke 데이터를 사용하는 다른 netcat이나 다른 응용 프로그램이 있을 수 있습니까?

아마도 명령은 \r \n 또는 이와 유사한 것으로 종료되어야 할 수도 있습니다. 써모트론은 이랬던 기억이 나는 것 같은데 꽤 오래전 일이네요. printf를 사용하여 이 작업을 수행할 수 있습니다.

printf "hello?\r\n" | nc -v -i1 localhost 10001 >> test.out 2>&1

답변2

이것을 그 자체로 "답변"이라고 부를 수 있을지는 모르겠지만, 제가 하고 싶은 일을 완전히 다른 방식으로 근사화할 수 있었습니다. nc를 사용하는 대신 /dev/tcp의 파일 설명자를 사용하여 더 많은 작업을 진행했습니다.

exec 3<>/dev/tcp/${host}/${port}
echo -e "read?" >&3
cat <&3 | tee -a ${log}
exec 3<&-
exec 3>&-

이 접근 방식을 사용하면 여전히 몇 가지 문제를 해결해야 하지만 필요한 데이터를 추출하여 로그 파일에 넣을 수 있었습니다. 이 방법으로 문제를 스스로 알아낼 수 없다면 나중에 다른 기사를 시도해 보겠습니다.

관련 정보