Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 1, 2016 23:13:16

Poplalka
Зарегистрирован: 2016-10-01
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

ftplib, загрузка файла с не! локального сервера возможна?

Добрый вечер. Прошу помощи, пожалуйста, сил уже нет)

С помощью ftplib на локальный сервер могу загрузить файл, фотография 100кб. А вот пытаюсь загрузить эту же фотографию с домашнего компьютера(не в локальной сети) - не получается!

"TimeoutError: Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера“

1) Брандмауэры выключены.
2) передать файл не могу, но смог создать директорию! FTP.mkd(”newDir“) Значит у него есть власть над удаленным фтп! Как же передать файл?
3) фтп - filezilla
4) Конечно же я меняю строку ftp.connect(”тут.имя.домена“, 1313)


import ftplib
from ftplib import FTP

ftp = FTP()
ftp.connect(”localhost“, 1313)
ftp.login(”login“, ”parol“)
ftp.cwd(”test“)
ftp.retrlines('LIST')
# Открываем файл для передачи в бинарном режиме
f = open(”img.jpg“, ”rb“)
# Передаем файл на сервер
send = ftp.storbinary(”STOR “ + ”photo.jpg", f)
# Закрываем FTP соединение
ftp.close
_________________________________________
Если это невозможно, есть ли простые аналоги? Я не сильный программист. Куда копать? urlftp что-то сложен.

Отредактировано Poplalka (Окт. 1, 2016 23:15:56)

Офлайн

#2 Окт. 2, 2016 04:27:55

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

ftplib, загрузка файла с не! локального сервера возможна?

Poplalka
TimeoutError: Попытка установить соединение была безуспешной
Через обычный telnet попробуй подключиться сначала с домашнего компьютера.



Офлайн

#3 Окт. 2, 2016 23:54:56

Poplalka
Зарегистрирован: 2016-10-01
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

ftplib, загрузка файла с не! локального сервера возможна?

py.user.next
Спасибо за ответ.

Это ведь для того, что бы проверить есть ли соединение?
FTP cервер доступен, я легко подключаюсь к нему с помощью filezilla client и через браузер. Да и могу создавать там каталоги добавив в код всего одну строчку. Каталог создать могу, а файл закинуть или прочитать список файлов - нет! Магия..

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

Если подключаюсь с компьютера, на котором установлен сервер, то файлзилла пишет что включен EPSV(расширенный пассивный режим) и всё работает, а если за NAT компьютер, то PASV(пассивный режим) и сразу дисконект.

Офлайн

#4 Окт. 3, 2016 03:27:17

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

ftplib, загрузка файла с не! локального сервера возможна?

Poplalka
Есть подозрения, что дело в пассивном режиме
Какая ему разница, откуда к нему подключаются? Он одинаково будет работать. Главное, есть соединение или нет.

Тем более вот ты писал
Poplalka
TimeoutError: Попытка установить соединение была безуспешной

Poplalka
Это ведь для того, что бы проверить есть ли соединение?
Не только. Во-первых, надо соединение установить, а во-вторых, надо использовать программу, которая точно ни под каким пользователем не зайдёт по умолчанию. А это либо ftp какая-нибудь, либо telnet. Так как программы ftp могут различаться на разных компах, а telnet'ы везде одинаковые, то используется telnet, потому что он точно будет делать то, что ты ему скажешь, и не будет делать того, что ты ему не скажешь. Это простая программа для передачи текста, без вникания в него.

Ты должен просто руками через telnet проделать всё, и сервер тебе ответит, что неправильно, и напишет в telnet ответ, который telnet никак не будет интерпретировать и что-то там сообщать со своей точки зрения. А все эти программы - клиенты - они расчитаны на полную автоматику и минимум информации. Они могут и под пользователем каким-нибудь входить и никак об этом не сообщать тебе, и ответы интерпретировать, что ты не узнаешь, что сервер там ответил конкретно, и так далее.

Понимаешь, он там может действий дохрена всяких делать, а тебе писать “я просто записываю файл”. А в telnet'е всё видно, как оно есть.

Вот ты говоришь “я не знаю, какой у меня там режим”, а почему не знаешь, а потому что ты его не делал, и потому ты не знаешь, вошёл ты в какой-то там режим или не вошёл. Программа сама там как-то входит, а ты даже не знаешь, что она там делает, нужно ли тебе это вообще. Если проблема есть, ты не должен строить догадки, ты должен взять максимально информативный инструмент и искать разницу между тем, что работает, и тем, что не работает.



Отредактировано py.user.next (Окт. 3, 2016 03:39:28)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version