Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FTP error 
:(
    Опции темы
infarch
Дата 10.2.2012, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 13.3.2009

Репутация: нет
Всего: 1



Сделал маленький скрипт для заливки файлов по фтп. На моем хостинге работает нормальною. Отдал заказчику. На его хостинге вылезает ошибка. Вот кусок лога:

Код

c:\work\Projects\aweno\complex5>uploader_ftp.pl
Net::FTP>>> Net::FTP(2.77)
Net::FTP>>>   Exporter(5.65)
Net::FTP>>>   Net::Cmd(2.29)
Net::FTP>>>   IO::Socket::INET(1.31)
Net::FTP>>>     IO::Socket(1.31)
Net::FTP>>>       IO::Handle(1.28)
Net::FTP=GLOB(0x365cdc4)<<< 220 ххх.ххх.ххх.ххх FTP server ready
Connected to ftp.ххххх.ххххх.co.uk
Net::FTP=GLOB(0x365cdc4)>>> USER username
Net::FTP=GLOB(0x365cdc4)<<< 331 Password required for username
Net::FTP=GLOB(0x365cdc4)>>> PASS ....
Net::FTP=GLOB(0x365cdc4)<<< 230 Welcome to Site.UK.
Logged in as username (ftp.ххххх.ххххх.co.uk)
Net::FTP=GLOB(0x365cdc4)>>> TYPE I
Net::FTP=GLOB(0x365cdc4)<<< 200 Type set to I
Switched to binary mode (ftp.ххххх.ххххх.co.uk)
Net::FTP=GLOB(0x365cdc4)>>> ALLO 2785
Net::FTP=GLOB(0x365cdc4)<<< 202 No storage allocation necessary
Net::FTP=GLOB(0x365cdc4)>>> PASV
Net::FTP=GLOB(0x365cdc4)<<< 227 Entering Passive Mode (213,131,252,241,241,4).
Net::FTP=GLOB(0x365cdc4)>>> STOR IOkruga.pm
Net::FTP=GLOB(0x365cdc4)<<< 150 Opening BINARY mode data connection for IOkruga.pm
Net::FTP=GLOB(0x365cdc4)<<< 550 IOkruga.pm: No space left on device
Could not send 'IOkruga.pm' to ftp.ххххх.ххххх.co.uk


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

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

Код

Switched to binary mode (s4.ho.ua)
Net::FTP=GLOB(0x37dcd94)>>> ALLO 2785
Net::FTP=GLOB(0x37dcd94)<<< 202 ALLO command ignored.
Net::FTP=GLOB(0x37dcd94)>>> PASV


А вот и герой дня - скрипт который заливает файлы:

Код

sub upload {
    my($addr, $login, $pass, $dir) = @_;
    
    # read the directory
    opendir(my $DIR, $dir) or die "Could not open $dir: $!";
    my @files = readdir $DIR;
    closedir $DIR;
    
    # start uploading
    
    while (@files > 0){
        
        my @failed;
        
        my $ftp = get_connection($addr, $login, $pass);
        
        while( my $file = shift @files ){
            my $path = "$dir/$file";
            unless( -d $path ){
                if( $ftp->put($path) ){
                    print "Uploaded $path\n";
                } else {
                    print "Could not send '$file' to $addr\n";
                    my $msg = $ftp->message();
                    if($msg=~/No space/){
                        $ftp->quit();
                        die "No enough space!";
                    }
                    # try again
                    push @failed, $file;
                }
            }
        }
    
        $ftp->quit();
        
        if(@failed > 0){
            print "Several files was not uploaded to $addr, try again\n";
            sleep 5;
            @files = @failed;
        }
        
    }
    
}

sub get_connection {
    my($addr, $login, $pass) = @_;
    my $ftp;
    while( ! ($ftp = Net::FTP->new($addr, Passive=>1, Debug=>1)) ){
        print "Could not connect to $addr\n";
        sleep 5;
    }
    print "Connected to $addr\n";
    $ftp->login($login, $pass)
        or die "Could not login: ", $ftp->message;
    print "Logged in as $login ($addr)\n";
    $ftp->binary();
    print "Switched to binary mode ($addr)\n";
    return $ftp;
}



Помогите плиз советом, никак не пойму в чем дело.
PM MAIL   Вверх
tzirechnoy
Дата 10.2.2012, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: нет
Всего: 16



Цитата
ALLO 2785


Впервые вижу такое. Хотя не должно влиять, конечно.

Очень вероятно, что total commander переходит куда-нибудь в /, а Ваш скрипт никуда не переходит -- это можэт быть какая-то не такая домашняя папка.
PM MAIL   Вверх
infarch
Дата 10.2.2012, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 13.3.2009

Репутация: нет
Всего: 1



Я пробовал: $ftp->cwd(".") | $ftp->cwd("./") | $ftp->cwd("/") и все безтолку. Та самая ошибка (
PM MAIL   Вверх
Pfailed
Дата 10.2.2012, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 22
Всего: 39



Сравните сниффером (например wireshark) команды отправляемые Net::FTP и Total Commander


--------------------
PM MAIL   Вверх
Agnosticus
Дата 2.3.2012, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 2.3.2012
Где: Москва

Репутация: нет
Всего: нет



Посмотрите через Data::Dumper $ftp объект, что выводит
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0935 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.