Помогите пожалуйста.
Нужно чтобы скрипт отправлял файлик на ftp. Фтп сервер настрое на анонимный доступ.


Фрагмент скрипта:

#!/bin/sh
host="192.168.1.11"
port="21"
user=""
pass=""
file="/home/user/123.zip"
ufile="/upload" 


ftp -n $host $port <<INPUT_END
quote USER $user
quote PASS $pass
bin
put $file $ufile
quit
INPUT_END

exit 0

При попытке выполнить выдает:

 ...
 files/entries read:  2305 (55M bytes)  skipped:  22 (13K bytes)
This FTP server is anonymous only.
Login with USER first.
Please login with USER and PASS.
Please login with USER and PASS.
ftp: bind: Address already in use

Не могу понять что он от меня хочет.

I like Linux

2

Curl`ом, даже с паролем. Гуглится в 2 клика, или мануал например почитать.

Leap 42.3 Calculate Linux, Xfce, Emacs, ..

3

Ооооо... Спасибо. Через curl получилось. но возник еще попутный вопрос.

#!/bin/bash
...
zip -r $putt/$0-`date +%d%m%y%H%M`.zip /home/user/1
curl -T  ??????? ftp://192.168.1.1/upload/

Как мне можно запомнить ту метку времени, которая попадает в название файла архива, чтобы правильное имя файла указать в curl  ??? Я ведь уже не смогу тем же шаблоном? Время то измениться может?

I like Linux

4

astalavista
Включаем голову и пишем:

...
DATE=$(date +%d%m%y%H%M)
zip -r $putt/$0-$DATE.zip /home/user/1
curl -T $putt/$0-$DATE.zip ftp://192.168.1.1/upload/

Profit.

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Arch Linux/Xfce/Xiaomi Mi Notebook Pro 15.6 | Slackware64-current/Xfce/Lenovo G580

5

Вот блин.... протупил ... ac
Спасибо.
Надо идти спать наверно.

I like Linux

6

А возможно как то после

curl -T $putt/$0-$DATE.zip ftp://192.168.1.1/upload/

но перед тем как сделать rm file убедиться что файл отправлен? Ведь сервер может не ответить или еще что то... а файлик удалиться.

I like Linux

7 (06.10.2014 22:46:47 отредактировано yars)

astalavista пишет:

перед тем как сделать rm file убедиться что файл отправлен?

Можно:

if [$? -eq 0 ]; then
    rm file
fi

Код завершения curl будет ненулевым в случае неуспеха отправки.

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Arch Linux/Xfce/Xiaomi Mi Notebook Pro 15.6 | Slackware64-current/Xfce/Lenovo G580

8 (06.10.2014 23:18:42 отредактировано astalavista)

Получилось.

I like Linux

9

yars пишет:

if [$? -eq 0 ]; then rm file fi

Не работат. Я уже переменную в кавычки взял в условии... Но выдает ошибку

[: : integer expression expected

Код такой:

test=$(curl -T ...... и т.п.)
if [ "$test" -eq 0 ]
then
rm файл
fi

Что то мне кажется что сравнить не получается у него с нулем...

I like Linux

10

А если ставлю вместо -eq  ==, то просто не удалянет файлик, ошибки не выводит

I like Linux

11

Код такой

Ну в таком виде вы заносите в переменную TEST не код завершения, а нечто другое. Если сравенивать $? с нулем, то должно работать...

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Arch Linux/Xfce/Xiaomi Mi Notebook Pro 15.6 | Slackware64-current/Xfce/Lenovo G580

12

Ну вот этот фрагмент полный

test=$(curl -T /home/user/$DAT.zip ftp://192.168.1.11/upload)
if [ "$test" -eq 0 ]
then
rm /home/user/$DAT.zip
fi

Если без условия if то файлик естественно отправляется (или не отправляется) и сразу удаляется

I like Linux

13

T

yars пишет:

Ну в таком виде вы заносите в переменную TEST не код завершения, а нечто другое

Ну так а как занести в переменную именно код завершения?

I like Linux

14

Все понял. Теперь точно получилось

I like Linux

15

yars пишет:

if [$? -eq 0 ]; then

лучше

if curl …
then rm …
fi
Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

16

astalavista пишет:

Ну так а как занести в переменную именно код завершения?

ERROR_CODE=$?

потом сравнивать с нулём так:

if (( ERROR_CODE == 0 )); then
    …
fi

двойные круглые скобки потому что арифметика

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)