Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Проверка доступности FTP хоста


Автор: tapio 2.2.2009, 12:30
Привет! Столкнулся с такой проблемой. У меня есть список ftp хостов, к которым я по очереди конекчусь и забираю от туда файлы. Выявилась такая проблема, что при недоступности какого то из этих хостов, цикл прерывается. Каким образом можно обойти это? А то что то я не соображу. :(
Код

    my $query = "SELECT t.fix_switch_id, t.ip_address, t.ftp_port, t.ftp_login, t.ftp_pas FROM nss_fix_switch t";
    my $result = DB::sql_q($query);
    my $i;
    my $ftp_host;
    my $ip_address;
    my $ftp_port;
    my $ftp_login;
    my $ftp_pass;
    for ($i=0; $i<@$result; $i++) {
        $ip_address = $result->[$i][1];
        $ftp_port = $result->[$i][2];
        $ftp_host = $ip_address.":".$ftp_port;
        my $ftp = Net::FTP->new($ftp_host) or die "Can't connect to $ftp_host: $@ \n";
        $ftp_login = $result->[$i][3];
        $ftp_pass = $result->[$i][4];
        $ftp->login($ftp_login,$ftp_pass) or die "Can't login \n";
        $ftp->binary();
    }   


Автор: amg 2.2.2009, 12:53
Попробуйте заменить строку
Код
my $ftp = Net::FTP->new($ftp_host) or die "Can't connect to $ftp_host: $@ \n";

на
Код
my $ftp = Net::FTP->new($ftp_host);
if (! $ftp) {
  warn "Can't connect to $ftp_host: $@ \n";
  next;
}


Аналогично,
Код
$ftp->login($ftp_login,$ftp_pass) or warn("Can't login to $ftp_host\n"), next;


Автор: ginnie 2.2.2009, 13:09
amg, понятнее будет 

Код

$ftp->login($ftp_login,$ftp_pass) or do{ warn("Can't login to $ftp_host\n"); next; };

Автор: amg 2.2.2009, 13:24
Цитата(ginnie @  2.2.2009,  13:09 Найти цитируемый пост)
понятнее будет
Действительно, понятнее smile 

Автор: tapio 2.2.2009, 14:51
Спасибо!! Помогло smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)