удалить файл на ftp сервере (на удаленном компьютере) при помощи Arduino с ethernet shield

andrey7617
Offline
Зарегистрирован: 08.06.2020

Добрый день уважаемые форумчане !!! прошу помощи у гуру !!!

Есть компьютер с белым айпишником. На нем есть FTP сервер. Хотелось бы чтобы ардуино, периодически заходило бы на этот FTP сервер и проверяло есть ли там файл 1.txt, а затем после того как обнаруживала этот файл включала реле и через какое то время Удаляла этот файл.

Ранее уважаемый sadman41 дал мне пример кода для записи файла на фтп серверю

https://playground.arduino.cc/Code/FTP/

Уважаемые форумчане дайте пожалуйста пример как можно при помощи ардуино удалить файл на удаленном ftp сервере ???

Заранее огромное спасибо !!!

andrey7617
Offline
Зарегистрирован: 08.06.2020

еще дополнение - проблема в том что в примере показано как записать файл с фтп сервера на сд карту ethernet shield и обратно с сд карты ethernet shield на удаленный фтп сервер.

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

то есть прошу дать пример кода чтобы арудино именно проверила есть ли на фтп сервере файл 1.txt, а затем после того как обнаруживала этот файл включала реле и через какое то время Удаляла этот файл. (ТО ЕСТЬ МИНУЯ ОБРАЩЕНИЕ К СД КАРТЕ)

 

ВОТ БОЛЕЕ ТОЧНЫЙ ВОПРОС

-------------------------------------------------------------------------------------------------------------------------------------

Уважаемые форумчане дайте пожалуйста пример как можно при помощи ардуино можно проверить существование файла на удаленном фтп сервере, а затем удалить файл на ftp сервере ??? (без обращения к сд карте)

-------------------------------------------------------------------------------------------------------------------------------------

Заранее огромное спасибо !!!

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

А сам разобраться и научиться не хочешь? 

andrey7617
Offline
Зарегистрирован: 08.06.2020

А сам разобраться и научиться не хочешь? 

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

ну а где можно прочитать про это ? - желательно на русском языке. если можно скиньте код тоже плиз ...

negavoid2
Offline
Зарегистрирован: 06.05.2020
client.println(F("DELE file.txt"));

 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

andrey7617 пишет:
если можно скиньте код тоже плиз ...
К сожалению, нельзя :-(

andrey7617
Offline
Зарегистрирован: 08.06.2020

 

 

andrey7617
Offline
Зарегистрирован: 08.06.2020

client.println(F("DELE file.txt"));

- вы можете более подробно расписать ? как я понимаю должно быть client.println(F("DELETE file.txt")) 

К сожалению, нельзя :-(

- Я не понимаю вас. Я на не высоком уровне понимания. И чего ? все с чего-то начинали. Хочу разобраться.

А сам разобраться и научиться не хочешь? 

- хочу. Изучал материал по видеурокам Алекса Гайвера на ютубе и еще есть американца AmperkaRu. Ну ткните в верном направлении. Типа кури книгу ххх раздел ххх. Зачем тролить то ?

Заранее огромное спасибо за помощь !!!

Morroc
Offline
Зарегистрирован: 24.10.2016

А в гугл можно ткнуть ? ) В данном конкретном случае лучше начать с соединения и управления ftp сервером через telnet, пробуете ручками что там как и потом тоже самое посылаете с ардуины.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

andrey7617 пишет:
Изучал материал по видеурокам Алекса Гайвера на ютубе

Так и задавай вопросы на https://community.alexgyver.ru здесь-то чего?

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

andrey7617
Offline
Зарегистрирован: 08.06.2020

А в гугл можно ткнуть ? ) 

- я вот не могу правильно сформировать вопрос - я пишу запись или удаление файла на ftp сервере - все вылазит создание фтп на самом ардуино ... можете подсказать хоть какой запрос то? 

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

- круто, можешь похвалить себя какой ты остряк ... ты книги то посоветовать можешь ? где бы этот вопрос разбирался ... 

sadman41
Offline
Зарегистрирован: 19.10.2016

Из примера по ссылке в первопосте можно понять, что суть управления FTP сервером в пассивном режиме есть подача простых текстовых команд. Т.е. достаточно сделать коннект на хост, авторизоваться и начать пулять туда строки. Список команд я тоже давал: https://en.m.wikipedia.org/wiki/List_of_FTP_commands

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

negavoid2
Offline
Зарегистрирован: 06.05.2020

То 16-летним назовут, то инспиритусом, прям негодую :)

sadman41
Offline
Зарегистрирован: 19.10.2016

Сорри, затупил.

Morroc
Offline
Зарегистрирован: 24.10.2016

andrey7617 пишет:
где бы этот вопрос разбирался ... 


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

не знаю что вы гуглите, но следует гуглить что то типа ftp server telnet example

andrey7617
Offline
Зарегистрирован: 08.06.2020

Добрый день.

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

- ну как отдельный ? методы то пишуться именно на языке ардуино урезанном c++ как я понял. В делфи на паскале мне написать такой код 5 минут. На ардуино не знаю вот и спрашиваю.

- ftp server telnet example искал - не нашел или не понял честно говоря для арудино.

 
sadman41 пишет:
Инспиритус же прямо показал какую команду необходимо использовать и как.
- нет не полностью
 
как я понял в примере - https://playground.arduino.cc/Code/FTP/
 
Команды на ФТП серевер идут благодоря двум объектам - EthernetClient client; EthernetClient dclient;
 
client.connect(server,21);
client.println(F("USER myuser"));
client.println(F("PASS mypassword"));
client.println(F("SYST"));
client.println(F("Type I"));
client.println(F("PASV"));

dclient.connect(server,hiPort);

client.print(F("STOR "));
dclient.connect(server,hiPort);

 

 
Запись на сд карту идет так
 
  client.print(F("STOR "));
  client.println(fileName);
  dclient.write(clientBuf,64);

 

 
в этот момент кода client.print(F("STOR ")); я ставил client.println(F("DELE file.txt")); - результат борода.
 
нужно еще обращаться к переменной dclient (как я понял) наверное должно быть что то вроде dclient.delete(... или dclient.remove(...
 
только что я не понимаю ...
sadman41
Offline
Зарегистрирован: 19.10.2016

------------

https://ru.wikipedia.org/wiki/FTP

FTP работает на прикладном уровне модели OSI и используется для передачи файлов с помощью TCP/IP. Для этого должен быть запущен FTP-сервер, ожидающий входящих запросов. Компьютер-клиент может связаться с сервером по порту 21. Это соединение (поток управления) остаётся открытым на время сессии.

Второе соединение (поток данных), может быть открыт как сервером из порта 20 к порту соответствующего клиента (активный режим), или же клиентом из любого порта к порту соответствующего сервера (пассивный режим), что необходимо для передачи файла данных.

Поток управления используется для работы с сессией — например, обмен между клиентом и сервером командами и паролями с помощью telnet-подобного протокола. Например, «RETR имя файла» передаст указанный файл от сервера клиенту.

------------

Вам для удаления файла нужен поток данных? Полагаю, что не очень. Нужна лишь текстовая команда, засланная в порт 21. 

Morroc
Offline
Зарегистрирован: 24.10.2016

andrey7617 пишет:
ну как отдельный ? методы то пишуться именно на языке ардуино урезанном c++ как я понял. В делфи на паскале мне написать такой код 5 минут. На ардуино не знаю вот и спрашиваю.

В чем разница то ? Абсолютно один хрен на чем такое писать, ну на асме разве по другому. У вас через телнет получилось удалить файл на фтп ?

Не надо пытаться методом тыка решать задачу. Нужно четко понимать что передавать серверу для удаления файла и каким из методов это передается. Можно еще взять и почитать описание методов тех обьектов, 5 минут займет (это про .remove).

andrey7617
Offline
Зарегистрирован: 08.06.2020

sadman41 пишет:

Поток управления используется для работы с сессией — например, обмен между клиентом и сервером командами и паролями с помощью telnet-подобного протокола. Например, «RETR имя файла» передаст указанный файл от сервера клиенту.

Вам для удаления файла нужен поток данных? Полагаю, что не очень. Нужна лишь текстовая команда, засланная в порт 21. 

- говорю же прописывал client.println(F("DELE file.txt")) - результат борода, при этом смотрю на сервере через файл зила сервер интерфейс - реально ардуинка конектится к серверу. В отладчике ардуинки (монитор порта) - вижу Serial.println(F("Data connected")) из вашего примера https://playground.arduino.cc/Code/FTP/. Файл на сервере лежит точно, лежит в корне папки фтп. В чем может быть проблема ? 

Morroc][quote=andrey7617 пишет:
Можно еще взять и почитать описание методов тех обьектов, 5 минут займет (это про .remove).

- Где ??? дайте ссылку. Если вы про это https://en.m.wikipedia.org/wiki/List_of_FTP_commands - я видел и читал. но как писал выше авторизуюсь на сервере отправляю команду client.println(F("DELE file.txt")) - результат борода.

Мне бы развернутый пример, с описанием ... а так все говорят учи матчасть а ссылку на статью или книгу где бы были примеры взаимодействия ардино с удаленным фтп сервером не дают ...

Nosferatu
Offline
Зарегистрирован: 04.11.2012

Может быть что угодно. от глупой ошибки в коде, до настроек прав доступа. Смотрите логи ФТП сервера.

Morroc
Offline
Зарегистрирован: 24.10.2016

Непробиваемый товарищ ) "без ардуино получается ?" "мне не надо без ардуино, с ардуино не получается" )

Пример сразу дали, как строки серверу отправлять там есть.

b707
Онлайн
Зарегистрирован: 26.05.2017

Morroc пишет:
Непробиваемый товарищ ) "без ардуино получается ?" "мне не надо без ардуино, с ардуино не получается" ).

"Халявщик обыкновенный" - "ничего читать и пробовать не буду. дайте готовый код"

 

b707
Онлайн
Зарегистрирован: 26.05.2017

andrey7617 пишет:

- говорю же прописывал client.println(F("DELE file.txt")) - результат борода

какая "борода". покажите?

Андрей, на любую команду ФТП-сервер дает ответ, выполнено или нет, код ошибки и тд. Вы в своем коде лупите команды. не проверяя ответов.  Вам же не зря советуют почитать описание ФТП протокола. И еще очень полезный совет дали - подключится к ФТП вручную и дать эту же команду. Вы что, никогда в жизни в консоли ФТП не работали?

Ну и из области "поворчать" - я абсолютно не вижу у вас желание решать проблему, все ждете, что кто-то сделает это за вас. Неужели самому не стыдно, что не можете разобраться в подобной ерунде? По мне так это показатель - если при такой куче документации и вы даже не пытаетесь искать ответ - значит вы вообще не способны программировать. бросайте это дело