Крону не удается запустить скрипт удара

У меня есть сценарий удара

#!/bin/sh

DTFILE=/etc/daytime.addr
DTPORT=13
DAYTIME_ERROR=/tmp/dtm.err

function daytime_error(){
    if [[ -z $1 ]]
    then 
    exit 1
    fi
    if [[ -e $DAYTIME_ERROR ]]
    then
    echo "Error already reported"
    else
    logger "$1"
    touch $DAYTIME_ERROR
    fi
    exit 1
}

if [[ -s $DTFILE ]]
then
    ADDR=$(head -n1 $DTFILE)
    DAYTIME=$(telnet $ADDR $DTPORT | time_conv.awk)
    if [[ -z $DAYTIME ]]
    then
    daytime_error "Daytime client: no connection to $ADDR"
    else
    date -s "$DAYTIME"
    hwclock -w
    rm $DAYTIME_ERROR
    fi

else
    daytime_error "Daytime client: no daytime server address in file $DTFILE"
fi

и это работает при вызове из командной строки, но сбои, когда крон называет его. Конкретно строка с командой telnet дает нулевые байты вывода. Telnet имеет 755 масок, таким образом, каждый пользователь должен смочь использовать его. Какие-либо идеи?

1
задан 21.04.2011, 12:41

2 ответа

DAYTIME=$(telnet $ADDR $DTPORT | time_conv.awk)

Сначала я сказал бы использование nc нет telnet - telnet делает попытку всех видов интерактивного согласования строки (TELOPTS) и вещей, тогда как nc просто создает сырые данные, чистые, соединение.

Во-вторых, где time_conv.awk? Возможно, необходимо ли указать полный путь в тот файл?

2
ответ дан 12.12.2019, 09:14

В кроне у Вас больше нет tty сессии, это не является интерактивным. Я думаю, что telnet не нравится это. Вам будет нужна некоторая другая программа для получения соединения. Простая программа, чтобы сделать подключение tcp и дамп, это - содержание, должна быть очень небольшой программой, даже для встроенной работы.

Если Вы работаете встроенный, и если у Вас есть удар, возможно, Ваша версия удара поддерживает /dev/tcp/host/port псевдоустройство. Это должно использоваться в перенаправлении, не открытом файле. Т.Е. cat < /dev/tcp/host/port будет работать, cat /dev/tcp/host/port даст ошибку.

$ DAYTIME= (кошка </dev/tcp/$ADDR/$DTPORT | time_conv.awk)

2
ответ дан 12.12.2019, 09:14

Теги

Похожие вопросы