URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 5466
[ Назад ]

Исходное сообщение
"Проблема выполнения скрипта через CRONTAB"

Отправлено Evgueny , 31-Май-06 14:20 
ОС: SunOS 5.8
Есть скрипт на shell, который по фтп забирает файлы с удалённого хоста. Если его запустить ручками, то всё работает, а если повесить в crontab, то выполняется до середины скрипта (судя по информации из лога этого скрипта). Всё обрывается на команде "get имя_файла". Кто-нибудь, подскажите, в какую сторону копать?

Содержание

Сообщения в этом обсуждении
"Проблема выполнения скрипта через CRONTAB"
Отправлено allez , 31-Май-06 21:01 
>ОС: SunOS 5.8
>Есть скрипт на shell, который по фтп забирает файлы с удалённого хоста.
>Если его запустить ручками, то всё работает, а если повесить в
>crontab, то выполняется до середины скрипта (судя по информации из лога
>этого скрипта). Всё обрывается на команде "get имя_файла". Кто-нибудь, подскажите, в
>какую сторону копать?


Не могли бы вы привести здесь текст скрипта и кусочек лога, а то по вашему пересказу
трудно судить о причинах сбоя...


"Проблема выполнения скрипта через CRONTAB"
Отправлено chip , 31-Май-06 21:59 
>ОС: SunOS 5.8
>Есть скрипт на shell, который по фтп забирает файлы с удалённого хоста.
>Если его запустить ручками, то всё работает, а если повесить в
>crontab, то выполняется до середины скрипта (судя по информации из лога
>этого скрипта). Всё обрывается на команде "get имя_файла".

get подразумевается встроенная команда ftp клиента? или отдельная команда?

> Кто-нибудь, подскажите, в
>какую сторону копать?

Обычно всё решается добавлением сразу после
#!/bin/sh

строчки

PATH="/bin:/usr/bin:/usr/ccs/bin:/usr/sfw/bin:${PATH}"; export PATH;

ps: пути уточните для свой соляры.



"Проблема выполнения скрипта через CRONTAB"
Отправлено Evgueny , 01-Июн-06 10:54 
>ОС: SunOS 5.8
>Есть скрипт на shell, который по фтп забирает файлы с удалённого хоста.
>Если его запустить ручками, то всё работает, а если повесить в
>crontab, то выполняется до середины скрипта (судя по информации из лога
>этого скрипта). Всё обрывается на команде "get имя_файла". Кто-нибудь, подскажите, в
>какую сторону копать?


Вот текст скрипта:

#/bin/sh

TMPFILE=/tmp/ftp.$$
TMP=files.$$
trap 'rm -f ${TMP} ; exit' 0 1 2 3 15
remhost=192.168.10.247
DAT=`date '+%Y-%m-%d'`
ftpflags="-i -n"
echo "user xxx pass" > ${TMP}
echo binary >> ${TMP}
echo cd /var/flows/reports/in/ >> ${TMP}
echo ls -rt >> ${TMP}
echo quit >> ${TMP}
#listing dir
ftp ${ftpflags} ${remhost} < ${TMP} >> ${TMP}

echo "user xxx pass" > ${TMPFILE}
echo binary >> ${TMPFILE}
echo cd /var/flows/reports/in/ >> ${TMPFILE}
#echo ls -rt >> ${TMPFILE}
echo lcd /neo/iptraffic/in/ >> ${TMPFILE};
for i in `awk '{if(index(substr($1,0,2),"20")==1) print $1}' ${TMP}`
do
    #if "$i" != "${DAT}"
        #then  
            echo get "$i" >> ${TMPFILE}
            echo rename "$i" "${i:1}" >> ${TMPFILE}
        #else
            # continue
    #fi
    #echo $i >> ${TMPFILE}
done
echo cd /var/flows/reports/out/ >> ${TMPFILE}
echo lcd /neo/iptraffic/out/ >> ${TMPFILE};
for i in `awk '{if(index(substr($1,0,2),"20")==1) print $1}' ${TMP}`
do
    #if "$i" != "${DAT}"
        #then  
            echo get "$i" >> ${TMPFILE}
            echo rename "$i" "${i:1}"  >> ${TMPFILE}
        #else
            # continue
    #fi
    #echo $i >> ${TMPFILE}
done
echo quit >> ${TMPFILE}
ftp ${ftpflags} ${remhost} < ${TMPFILE} >> ${TMPFILE}
echo ${remhost} >> ${TMPFILE}

попытка добавить PATH в начале скрипта к другому результату не привела. В ${TMPFILE} всё заканчивается на "get ..."


"Проблема выполнения скрипта через CRONTAB"
Отправлено Evgueny , 01-Июн-06 11:08 
>ОС: SunOS 5.8
>Есть скрипт на shell, который по фтп забирает файлы с удалённого хоста.
>Если его запустить ручками, то всё работает, а если повесить в
>crontab, то выполняется до середины скрипта (судя по информации из лога
>этого скрипта). Всё обрывается на команде "get имя_файла". Кто-нибудь, подскажите, в
>какую сторону копать?

Кстати, вот что Crontab по мылу прислал после выполнения скрипта:

Your "cron" job on solar
/bin/sh -c "/neo/iptraffic/ftpscript.sh >/tmp/ftpcron.$$"

produced the following output:

/neo/iptraffic/ftpscript.sh: bad substitution

Что это значит?


"Проблема выполнения скрипта через CRONTAB"
Отправлено ACCA , 02-Июн-06 03:52 
>/neo/iptraffic/ftpscript.sh: bad substitution
>
>Что это значит?


/bin/sh не умеет ${i:1}. Попробуй /usr/bin/bash


"Проблема выполнения скрипта через CRONTAB"
Отправлено Evgueny , 02-Июн-06 13:05 
>>/neo/iptraffic/ftpscript.sh: bad substitution
>>
>>Что это значит?
>
>
>/bin/sh не умеет ${i:1}. Попробуй /usr/bin/bash


Как это /bin/sh не умеет ${i:1}? А, почему, тогда, если руками скрипт запускаешь, то он нормально отрабатывает?


"Проблема выполнения скрипта через CRONTAB"
Отправлено chip , 02-Июн-06 13:12 
>>ОС: SunOS 5.8
>>Есть скрипт на shell, который по фтп забирает файлы с удалённого хоста.
>>Если его запустить ручками, то всё работает, а если повесить в
>>crontab, то выполняется до середины скрипта (судя по информации из лога
>>этого скрипта). Всё обрывается на команде "get имя_файла". Кто-нибудь, подскажите, в
>>какую сторону копать?
>
>Кстати, вот что Crontab по мылу прислал после выполнения скрипта:
>
>Your "cron" job on solar
>/bin/sh -c "/neo/iptraffic/ftpscript.sh >/tmp/ftpcron.$$"
>
>produced the following output:
>
>/neo/iptraffic/ftpscript.sh: bad substitution
>
>Что это значит?

Добавить в начало скрипта set -x и прописать MAILTO на существующий адрес, чтобы разобрать вывод скрипта.