redirecionando saída de telnet / nc para arquivo no script falha quando cron'd

1

Portanto, tenho um dispositivo na minha rede que fica lá escutando uma porta para uma conexão e, quando uma conexão é feita, ela despeja os dados ascii. Eu preciso capturar esses dados em um arquivo. Eu escrevi um script simples morto que faz isso:

#!/bin/bash

#Config Variables. Age is in Days.
DATA_ROOT=/root/data
FILENAME=data_'date +%F'.dat
HOST=device
COMPRESS_AGE=3

#Sanity Checks
if [ ! -e $DATA_ROOT ]
then
        echo "The directory $DATA_ROOT seems to not exist. Please create it."
        exit 1
fi

if [ -e $DATA_ROOT/$FILENAME ]
then
        echo "You seem to have extracted data already today. Aborting"
        exit 1
fi


#Get Data
nc $HOST 2202 > $DATA_ROOT/$FILENAME
#Compress old Data
find $DATA_ROOT -type f -mtime +$COMPRESS_AGE -exec gzip {} \;

exit 0

Funciona muito bem quando eu o executo manualmente, mas quando o executo pelo cron, ele não captura nada da saída. Se eu substituir nc por telnet, vejo os cabeçalhos iniciais do telnet sobre sequências de escape e outros, mas não os dados.

Idéias? Eu tentei forçar o bash a agir como um shell interativo com -i. Eu tentei redirecionar stderr e stdout. Eu sei que tem que ser uma coisa simples e boba, mas estou fracassando. Isso está me deixando louca ...

EDIT Eu também notei que os processos nc de todas as minhas tentativas anteriores estavam dormindo, e quando eu os matei, o cron me enviou um monte de mensagens de erro não sensíveis. Pelo menos agora eu tenho algo para cavar!

    
por qhartman 02.07.2010 / 23:55

1 resposta

1

É possível que seu script esteja funcionando e é apenas a saída que está se perdendo. Você poderia tentar capturar a saída nc em uma variável própria e, em seguida, fazer o eco dessa variável para

#Get Data
ncoutput=$( /path/to/nc $HOST 2202 2>&1 )
printf "%s\n" "$ncoutput" > $DATA_ROOT/$FILENAME
#Compress old Data
find $DATA_ROOT -type f -mtime +$COMPRESS_AGE -exec gzip {} \;

exit 0

printf preserva a formatação da saída, enquanto echo não.

    
por 15.02.2011 / 20:58