HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Песочница
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 12.07.2015, 18:40
jslby
Познающий
Регистрация: 18.05.2015
Сообщений: 37
Провел на форуме:
13262

Репутация: 0
По умолчанию

Хочу разобраться с мультипоточностью на более простом скрпте, в последующем внедрив данное решение в свой второй скрипт. Вот что у меня получается:

Код:
use strict;
use warnings;
use Getopt::Std;
use HTTP::Cookies;
use threads;
use threads::shared;
use LWP;
use HTTP::Request::Common qw(POST);
use HTTP::Request::Common qw(GET);
use Data::Dumper qw(Dumper);

my $cookie_jar = HTTP::Cookies->new(
    file => 'wpcheck.dat',
    autosave => 1,
);

getopt('d:t:');

our($opt_d, $opt_t, $dfh);

my @threads;
my @domains;
my @running;

open($dfh, '){
    chomp $thisDomain;
    push @domains, $thisDomain;
}

while(@domains){
    @running = threads->list(threads::running);
    if(scalar @running new(\&check);
        # Вот тут скрипт выходит и всё.
    }
   
    foreach (@threads){
        if($_->is_joinable()){
            $_->join();
        }
    }
}

sub check{
    my $el = pop(@domains);
    my $ua = LWP::UserAgent->new;

    $ua->cookie_jar($cookie_jar);

    my $resp = $ua->get("http://$el/wp-login.php");

    if($resp->code() == 200){
        print "$el\n";
    }
}
Отписал комментарием в коде где происходит остановка скрипта. Никаких ошибок и предупреждений. Не могу только это понять. Суть скрипта:

Скрипт запускается и получает очередь доменов из файла.

Создает очередь потоков равным входящему параметру T

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

Заранее спасибо гуру
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.