Страница 1 из 1

простой скрипт. что я не так делаю?

Добавлено: 2008-07-17 10:24:23
f0s
написал такой скрипт:

Код: Выделить всё

[f0s@router] /root/bin/> cat uploads.sh
#!/bin/sh
cd /tmp/uploads
if [ -e *.* ]
then
ftp -u ftp://username:password@artishok.artpromcompany.ru/ *.*
cd /tmp/uploads
rm -rf /tmp/uploads
mkdir /tmp/uploads
chmod 777 /tmp/uploads
/usr/local/bin/lynx -source http://artishok.artpromcompany.ru/modules/warehouse/exchange.php
else
fi
exit 0
[f0s@router] /root/bin/>

скрипт должен смотреть в папку /tmp/uploads, и если там есть файлы, то заливать их на фтп. в первый раз все ок отработало. поставил скрипт в крон на каждые 5 минут. сомтрю, файлы не передабтся.. запускаю скрипт, смотрю:

Код: Выделить всё

[f0s@router] /root/bin/> ./uploads.sh
[: Z00089.jpg: unexpected operator
при этом вот что в папке /tmp/uploads

Код: Выделить всё

[f0s@router] /root/bin/> ll /tmp/uploads/
total 142
-rw-r--r--  1 lukov  wheel   42770 16 июл 17:54 Z00089.jpg
-rw-r--r--  1 lukov  wheel  101506 17 июл 10:49 catalogue_objects.csv
[f0s@router] /root/bin/>
если удалить джпегу, то вроде ок:

Код: Выделить всё

[f0s@router] /root/bin/> [f0s@router] /root/bin/> ./uploads.sh
Connected to artishok.artpromcompany.ru.
220 ProFTPD 1.3.0 Server ready.
331 Password required for username.
230 User username logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
200 Type set to I
local: catalogue_objects.csv remote: catalogue_objects.csv
229 Entering Extended Passive Mode (|||35072|)
150 Opening BINARY mode data connection for catalogue_objects.csv
100% |*************************************|    99 KB    2.60 MB/s    00:00 ETA
226 Transfer complete.
101506 bytes sent in 00:00 (1.56 MB/s)
[f0s@router] /root/bin/>
и потом залить джпегу отдельно оставить и запусить скрипт - то тоже ок:

Код: Выделить всё

[f0s@router] /root/bin/> [f0s@router] /root/bin/> ./uploads.sh
Connected to artishok.artpromcompany.ru.
220 ProFTPD 1.3.0 Server ready.
331 Password required for username.
230 User username logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
200 Type set to I
local: Z00089.jpg remote: Z00089.jpg
229 Entering Extended Passive Mode (|||35064|)
150 Opening BINARY mode data connection for Z00089.jpg
100% |*************************************| 42770     335.30 KB/s    00:00 ETA
226 Transfer complete.
42770 bytes sent in 00:00 (288.94 KB/s)
[f0s@router] /root/bin/>

уж не знаю в чем и глюк.. причем иногда нормлаьно все работает...

Re: простой скрипт. что я не так делаю?

Добавлено: 2008-07-17 11:15:28
zingel
смотреть в лог крона...и запустить скрипт в дебаге

Код: Выделить всё

#!/bin/sh -xv

Re: простой скрипт. что я не так делаю?

Добавлено: 2008-07-17 11:25:59
f0s
да крон-то фиг с ним. я ж говорю, когда запускаю просто скрипт, он выдает:

Код: Выделить всё

[f0s@router] /root/bin/> ./uploads.sh
[: Z00089.jpg: unexpected operator

Re: простой скрипт. что я не так делаю?

Добавлено: 2008-07-17 11:33:32
zingel

Re: простой скрипт. что я не так делаю?

Добавлено: 2008-07-17 12:04:08
salvator

Код: Выделить всё

if [ -e *.* ]
здесь по ходу валится. имена файлов нормальные?

Re: простой скрипт. что я не так делаю?

Добавлено: 2008-07-17 13:12:38
f0s

Код: Выделить всё

[f0s@router] /root/bin/> ./uploads.sh
#!/bin/sh -xv
cd /tmp/uploads
+ cd /tmp/uploads
if [ -e * ]
then
ftp -u ftp://username:password@artishok.artpromcompany.ru/ *.*
cd /tmp/uploads
rm -rf /tmp/uploads
mkdir /tmp/uploads
chmod 777 /tmp/uploads
/usr/local/bin/lynx -source http://artishok.artpromcompany.ru/modules/warehouse/exchange.php
else
fi
+ [ -e Z00089.jpg catalogue_objects.csv ]
[: Z00089.jpg: unexpected operator
exit 0
+ exit 0
[f0s@router] /root/bin/>

Re: простой скрипт. что я не так делаю?

Добавлено: 2008-07-17 15:33:31
f0s
ну вот еще немного видоизменил скрипт таким образом:

Код: Выделить всё

#!/bin/sh -xv
cd /tmp/uploads
TEMP=`ls -lA | cut -d" " -f2`
if [ $TEMP ne "0" ]
then
ftp -u ftp://username:password@artishok.artpromcompany.ru/ *.*
cd /tmp/uploads
rm -rf /tmp/uploads
mkdir /tmp/uploads
chmod 777 /tmp/uploads
/usr/local/bin/lynx -source http://artishok.artpromcompany.ru/modules/warehouse/exchange.php
else
mkdir /tmp/qqq
fi
exit 0
судя по отладке, скрипт идет на else, пропуская then

Код: Выделить всё

[f0s@router] /root/bin/> [f0s@router] /root/bin/> ./uploads.sh
#!/bin/sh -xv
cd /tmp/uploads
+ cd /tmp/uploads
TEMP=`ls -lA | cut -d" " -f2`
+ ls -lA
+ cut -d  -f2
+ TEMP=142
if [ $TEMP ne "0" ]
then
ftp -u ftp://username:password@artishok.artpromcompany.ru/ *.*
cd /tmp/uploads
rm -rf /tmp/uploads
mkdir /tmp/uploads
chmod 777 /tmp/uploads
/usr/local/bin/lynx -source http://artishok.artpromcompany.ru/modules/warehouse/exchange.php
else
mkdir /tmp/qqq
fi
+ [ 142 ne 0 ]
[: 142: unexpected operator
+ mkdir /tmp/qqq
exit 0
+ exit 0
[f0s@router] /root/bin/>
и тоже, как вы видите, выдает unexpected operator

Re: простой скрипт. что я не так делаю?

Добавлено: 2008-07-17 16:03:31
salvator
дайте вывод

Код: Выделить всё

ls /tmp/uploads

Re: простой скрипт. что я не так делаю?

Добавлено: 2008-07-17 16:58:48
f0s
чуть выше давал уже.. но повторюсь:

Код: Выделить всё

ls /tmp/uploads
Z00089.jpg              catalogue_objects.csv

Re: простой скрипт. что я не так делаю?

Добавлено: 2008-07-18 1:20:37
Alex Keda

Re: простой скрипт. что я не так делаю?

Добавлено: 2008-07-18 9:28:28
f0s
окончательный вариант. может кому пригодится:

Код: Выделить всё

#!/bin/sh
cd /tmp/uploads
if [ "`ls -lA | grep total |cut -d" " -f2`" != "0" ]
then
ftp -u ftp://username:password@artishok.artpromcompany.ru/ *.*
cd /tmp/uploads
rm -rf /tmp/uploads
mkdir /tmp/uploads
chmod 777 /tmp/uploads
/usr/local/bin/lynx -source http://artishok.artpromcompany.ru/modules/warehouse/exchange.php
else
echo NO_FILES
fi
exit 0

Re: простой скрипт. что я не так делаю?

Добавлено: 2008-07-18 10:19:22
squid
может тему переименовать по описанию скрипта или перенести в скрипты ?

Re: простой скрипт. что я не так делаю?

Добавлено: 2008-07-18 10:25:59
f0s
кстати, может кто знает как дополнить скрипт так, чтобы он еще перед заливкой файлов на фтп удалял оттуда файлы, дата создания которых старше 5 дней?

Re: простой скрипт. что я не так делаю?

Добавлено: 2008-07-18 12:04:55
Za...
Для перенапровления команд в ftp используем данную конструкцию

Код: Выделить всё

echo "
ls
dir " | ftp ftp://username:password@artishok.artpromcompany.ru/