Найти - Пользователи
Полная версия: Проблема с python ftplib
Начало » Python для экспертов » Проблема с python ftplib
1
XoFfiCEr
Привет
Решил накорябать свой небольшой ftp-клиент так как у filezilla много недостатков.
 def ftp_connect():
    ftp_connect = ftplib.FTP(config_data_domain, config_data_user, config_data_password)    #коннектимся
    msg = ftp_connect.getwelcome()
    #print (config_data_path)
    ftp_connect.sendcmd('CDUP')
собственно код
на хостинге у меня 2 сайта:
и структура примерно такая
login ——————–
| |
site1 site2
| |
public_html public_html

все коннектится и текущий каталог становится site1/public_html
но мне надо перейти на 2 сайт как то и команда ftp_connect.sendcmd('CDUP')[ почему то не работает она не пишет ошибок но каталог не меняется.
Попытка сменить каталог указав имя вызывает ошибку
550 Failed to change directory

Собсно тут я еще об этом писал https://www.linux.org.ru/forum/web-development/16306351
Подскажите куда копать и как разобраться? Спасибо. Ftplib доселе не использовал.
PEHDOM
CDUP переходит на уровень вверх, вы уверены что есть куда переходить? Из другого ФТП клиента переходит на уровень вверх из site1/public_html? Меняет ли директорию?
XoFfiCEr
PEHDOM
CDUP переходит на уровень вверх, вы уверены что есть куда переходить? Из другого ФТП клиента переходит на уровень вверх из site1/public_html? Меняет ли директорию?
какого другого ФТП-клиента? в файлзилле переходит
PEHDOM
XoFfiCEr
какого другого ФТП-клиента? в файлзилле переходит
В любом, в той же файлзилле.
А почему вы решили что не переходит?
 import ftplib
config_data_domain = '127.0.0.1'
config_data_user = 'test1'
config_data_password = 'test1'
ftp_connect = ftplib.FTP(config_data_domain, config_data_user, config_data_password) 
print(ftp_connect.sendcmd('CWD /site1/public_htm'))
print(ftp_connect.sendcmd('CDUP'))
print(ftp_connect.sendcmd('CDUP'))
print(ftp_connect.sendcmd('CWD site2'))
ftp_connect.sendcmd('QUIT')
>>> 
250 CWD successful. "/site1/public_htm" is current directory.
200 CDUP successful. "/site1" is current directory.
200 CDUP successful. "/" is current directory.
250 CWD successful. "/site2" is current directory.
>>>
по крайней мере ftplib работает, может у вас проблема с ftp сервером?
XoFfiCEr
Потому что по pwd или что там, выдается та же директория.
Я проверял.
При выводе каталогов и файлов аналогично абсолютно.
PEHDOM
c ftplib тоже все нормально.
 import ftplib
config_data_domain = '127.0.0.1'
config_data_user = 'test1'
config_data_password = 'test1'
ftp_connect = ftplib.FTP(config_data_domain, config_data_user, config_data_password)
print(ftp_connect.sendcmd('CWD /site1/public_htm'))
print(ftp_connect.sendcmd('PWD'))
print(ftp_connect.sendcmd('CDUP'))
print(ftp_connect.sendcmd('PWD'))
print(ftp_connect.sendcmd('CDUP'))
print(ftp_connect.sendcmd('PWD'))
print(ftp_connect.sendcmd('CWD site2'))
print(ftp_connect.sendcmd('PWD'))
ftp_connect.sendcmd('QUIT')
>>>
250 CWD successful. "/site1/public_htm" is current directory.
257 "/site1/public_htm" is current directory.
200 CDUP successful. "/site1" is current directory.
257 "/site1" is current directory.
200 CDUP successful. "/" is current directory.
257 "/" is current directory.
250 CWD successful. "/site2" is current directory.
257 "/site2" is current directory.
>>> 
(000012)12.05.2021 17:54:35 - (not logged in) (127.0.0.1)> USER test1
(000012)12.05.2021 17:54:35 - (not logged in) (127.0.0.1)> 331 Password required for test1
(000012)12.05.2021 17:54:35 - (not logged in) (127.0.0.1)> PASS *****
(000012)12.05.2021 17:54:35 - test1 (127.0.0.1)> 230 Logged on
(000012)12.05.2021 17:54:35 - test1 (127.0.0.1)> CWD /site1/public_htm
(000012)12.05.2021 17:54:35 - test1 (127.0.0.1)> 250 CWD successful. "/site1/public_htm" is current directory.
(000012)12.05.2021 17:54:35 - test1 (127.0.0.1)> PWD
(000012)12.05.2021 17:54:35 - test1 (127.0.0.1)> 257 "/site1/public_htm" is current directory.
(000012)12.05.2021 17:54:35 - test1 (127.0.0.1)> CDUP
(000012)12.05.2021 17:54:35 - test1 (127.0.0.1)> 200 CDUP successful. "/site1" is current directory.
(000012)12.05.2021 17:54:35 - test1 (127.0.0.1)> PWD
(000012)12.05.2021 17:54:35 - test1 (127.0.0.1)> 257 "/site1" is current directory.
(000012)12.05.2021 17:54:35 - test1 (127.0.0.1)> CDUP
(000012)12.05.2021 17:54:35 - test1 (127.0.0.1)> 200 CDUP successful. "/" is current directory.
(000012)12.05.2021 17:54:35 - test1 (127.0.0.1)> PWD
(000012)12.05.2021 17:54:35 - test1 (127.0.0.1)> 257 "/" is current directory.
(000012)12.05.2021 17:54:35 - test1 (127.0.0.1)> CWD site2
(000012)12.05.2021 17:54:35 - test1 (127.0.0.1)> 250 CWD successful. "/site2" is current directory.
(000012)12.05.2021 17:54:35 - test1 (127.0.0.1)> PWD
(000012)12.05.2021 17:54:35 - test1 (127.0.0.1)> 257 "/site2" is current directory.
(000012)12.05.2021 17:54:35 - test1 (127.0.0.1)> QUIT
(000012)12.05.2021 17:54:35 - test1 (127.0.0.1)> 221 Goodbye
(000012)12.05.2021 17:54:35 - test1 (127.0.0.1)> disconnected.
смотрите логи фтп сервера что там происходит во время ваших запросов, и оттуда уже пляшите. Потому как той информации что вы дали критически недостаточно для диагностики.
XoFfiCEr
Не работает все равно.
Начнем с pwd:
Пишет: 257 “/” is the current directory
cdup не работает с той же ошибкой в логах ftp ничего такого про ошибки.
Что то про deprecated но это не имеет отношения к делу.
Может это такие настройки хостера?
py.user.next
XoFfiCEr
все коннектится и текущий каталог становится site1/public_html
но мне надо перейти на 2 сайт как то и команда ftp_connect.sendcmd('CDUP')[ почему то не работает она не пишет ошибок но каталог не меняется.
Сделай тогда в директории
site1/public_html
поддиректорию какую-нибудь.
Затем спустись в неё через cwd. Затем проверь, что получилось спуститься в неё, через pwd. После этого сделай cdup из неё. И после этого проверь, что получилось подняться из неё обратно, через pwd.

Если всё получилось, ищи различия между этой тестовой поддиректорией и той, в которую ты не можешь подняться. А если не получилось, тогда ищи источник проблемы выполнения любой команды cdup.
PEHDOM
XoFfiCEr
Пишет: 257 “/” is the current directory
ну так и куда вы собираетесь делать ‘CDUP’ если вы и так в корне?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB