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

Исходное сообщение
"Скрипт FTP Transfer и его Error code"

Отправлено Arpo , 06-Ноя-07 09:32 
Здравия всем....
:)

Есть скрипт:
_______________________________________
#!/bin/sh

HOST='127.0.0.1'
USER='root'
PASSWD='toor'

ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd $DEST
dir
quit
END_SCRIPT
_________________________________________
Надо получить Error code. Тоесть если задача выполнена зделать что-то, а если нет напечатать что не получилось. Пробовал так:
_________________________________________
FTP_ER=$?
if [ $FTP_ER -ne 0 ]
then
     echo "Some Error"      
else
     echo "Complited succsessfully"      
fi
__________________________________________
Так не работает.

Спасибо за помощ.


Содержание

Сообщения в этом обсуждении
"Скрипт FTP Transfer и его Error code"
Отправлено angra , 08-Ноя-07 06:06 
А используемый вами ftp вообще возвращает коды отличные от 0 и если да то в каких случаях? Обычно указывается в man. Причем неудачное завершение команды cd или dir врядли повлияет на код возврата.

"Скрипт FTP Transfer и его Error code"
Отправлено Arpo , 08-Ноя-07 08:27 
>А используемый вами ftp вообще возвращает коды отличные от 0 и если
>да то в каких случаях? Обычно указывается в man. Причем неудачное
>завершение команды cd или dir врядли повлияет на код возврата.

На самом деле кусок скрипта где производится соеденение по фтп воспринимается интерпритатором как одна комманда (обратите внимание на <<END_SCRIPT и END_SCRIPT).

ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd $DEST
dir
quit
END_SCRIPT

Меня интересует код возврата от исполнения жсего набора комманд заклыученниь в "END_SCRIPT",
будь то невозможность соеденится с сервером или неправельный юзер/пасс.
А что касается возвращает ли комманда какой либо код, то насколько я знаю код возвращает любая комманда: 0 если удачно и больше 0 если неудачно.

З.Ы. На самом деле я решил проблему при помощи Perl скрипта исползуя модуль Net:FTP, но все же проблема актуальна.


"Скрипт FTP Transfer и его Error code"
Отправлено angra , 10-Ноя-07 13:31 
Я в курсе что-такое document here и как он работает :)
Если не сможет соединится с сервером или авторизоваться, то _возможно_ вернет не нулевой код возврата. Если же не выполнится cd или dir, то скорее всего код возврата будет 0. Но это лишь предположение основанное на поведении других утилит, в тех man ftp что я видел нет описания кодов возврата, возможно даже что всегда возвращается 0, так как команда по сути предназначена для интерактивной работы, а не для скриптов. Правильный подход к проблеме имеется в ncftp, который я использую и вам рекомендую.

P.S. если уж знаешь perl, то зачем вообще возится с шеллом?


"Скрипт FTP Transfer и его Error code"
Отправлено Arpo , 11-Ноя-07 14:16 
>[оверквотинг удален]
>Если не сможет соединится с сервером или авторизоваться, то _возможно_ вернет не
>нулевой код возврата. Если же не выполнится cd или dir, то
>скорее всего код возврата будет 0. Но это лишь предположение основанное
>на поведении других утилит, в тех man ftp что я видел
>нет описания кодов возврата, возможно даже что всегда возвращается 0, так
>как команда по сути предназначена для интерактивной работы, а не для
>скриптов. Правильный подход к проблеме имеется в ncftp, который я использую
>и вам рекомендую.
>
>P.S. если уж знаешь perl, то зачем вообще возится с шеллом?

Что касается ncftp, на тупом сервере где это должно работат его нет, а то и я про него знаю и использую. Установить не могу, шеф не пускает, говорит ничего лишнего, поди обьясни....
А что касается знаний Perl, все тот же шеф, говорит Shell это часть системы, а перл это стороняя программа:). Проста тут было легче поскольку перл всетаки был установлен в системе:)


"Скрипт FTP Transfer и его Error code"
Отправлено angra , 13-Ноя-07 15:09 
>А что касается знаний Perl, все тот же шеф, говорит Shell это часть системы, а перл это стороняя программа

Ну тогда нужно писать на чистом sh и не использовать gnu расширения различных утилит. Сервера, где нет bash и, например, tar/grep/curl имеет другой набор опций мне встречались, а вот серверов без базового perl еще ни одного не видел.