Capturando dados de um Fluke 1620a via netcat

1

Estou tentando extrair dados de temperatura e umidade dos termo-higrômetros Fluke DewK 1620a e gravar as leituras de temperatura / umidade em um registro. Eu posso conectar ao dispositivo via netcat com um simples 'nc 1.2.3.4 10001', executar alguns comandos básicos e receber saída. Agora eu gostaria de construir uma linha de comando, eu posso colocar em um script que irá enviar um comando e escrever a saída para um arquivo.

Se eu executar o seguinte na linha de comando

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

Eu recebo:

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

Após o intervalo -i ter decorrido, a conexão será fechada e o meu prompt substituirá os dados de temperatura e umidade.

Eu então tentei o seguinte:

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

O comando é executado e o arquivo 'test.out' contém apenas o seguinte para cada execução.

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

As leituras de temperatura e umidade não estão incluídas no arquivo. Aumentar a verbosidade não parece ajudar.

Eu sei que provavelmente estou sentindo falta de algo óbvio, mas simplesmente não consigo ver. Qualquer ajuda seria muito apreciada.

    
por DFarland 05.11.2014 / 19:37

2 respostas

0

Não tenho certeza se chamaria de "resposta", mas consegui me aproximar do que eu queria fazer de uma maneira completamente diferente. Em vez de nc, consegui ir mais longe usando um descritor de arquivo em / dev / tcp.

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

Ainda há alguns problemas que preciso resolver com essa abordagem, mas consigo extrair os dados de que preciso e colocá-los em um arquivo de log. Vou tentar outro post mais tarde se eu não conseguir descobrir meus problemas mesquinhos com esse método.

    
por 26.11.2014 / 12:01
0

Não vejo nada de errado, o que me faz pensar se o seu Fluke está realmente respondendo.

Estes dois scripts netcat mostram que não há nada errado com sua sintaxe

servidor:

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

cliente:

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

test.out

[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).

Então, desde que tudo isso funcione, verifique se você está recebendo respostas do Fluke. Talvez exista outro netcat ou outro aplicativo que esteja consumindo os dados da Fluke?

Talvez o comando precise ser terminado por \ r \ n ou algo parecido. Eu pareço lembrar que sendo o caso de Thermotrons, mas tem sido um longo tempo. Você pode usar o printf para fazer isso:

printf "hello?\r\n" | nc -v -i1 localhost 10001 >> test.out 2>&1
    
por 05.11.2014 / 19:55