ОС: SunOS 5.8
Есть скрипт на shell, который по фтп забирает файлы с удалённого хоста. Если его запустить ручками, то всё работает, а если повесить в crontab, то выполняется до середины скрипта (судя по информации из лога этого скрипта). Всё обрывается на команде "get имя_файла". Кто-нибудь, подскажите, в какую сторону копать?
>ОС: SunOS 5.8
>Есть скрипт на shell, который по фтп забирает файлы с удалённого хоста.
>Если его запустить ручками, то всё работает, а если повесить в
>crontab, то выполняется до середины скрипта (судя по информации из лога
>этого скрипта). Всё обрывается на команде "get имя_файла". Кто-нибудь, подскажите, в
>какую сторону копать?
Не могли бы вы привести здесь текст скрипта и кусочек лога, а то по вашему пересказу
трудно судить о причинах сбоя...
>ОС: SunOS 5.8
>Есть скрипт на shell, который по фтп забирает файлы с удалённого хоста.
>Если его запустить ручками, то всё работает, а если повесить в
>crontab, то выполняется до середины скрипта (судя по информации из лога
>этого скрипта). Всё обрывается на команде "get имя_файла".get подразумевается встроенная команда ftp клиента? или отдельная команда?
> Кто-нибудь, подскажите, в
>какую сторону копать?Обычно всё решается добавлением сразу после
#!/bin/shстрочки
PATH="/bin:/usr/bin:/usr/ccs/bin:/usr/sfw/bin:${PATH}"; export PATH;
ps: пути уточните для свой соляры.
>ОС: 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 ..."
>ОС: 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
Что это значит?
>/neo/iptraffic/ftpscript.sh: bad substitution
>
>Что это значит?
/bin/sh не умеет ${i:1}. Попробуй /usr/bin/bash
>>/neo/iptraffic/ftpscript.sh: bad substitution
>>
>>Что это значит?
>
>
>/bin/sh не умеет ${i:1}. Попробуй /usr/bin/bash
Как это /bin/sh не умеет ${i:1}? А, почему, тогда, если руками скрипт запускаешь, то он нормально отрабатывает?
>>ОС: 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 на существующий адрес, чтобы разобрать вывод скрипта.