UPD: Продолжение тут - http://www.k4route.ru/2012/05/perl-threads-queue.html
Имеется много хостов. Периодически нужно цеплятся к каждому и вытягивать какой-нить принтаут или просто давать какаю-нить команду, да так, чтоб одновременно. Множить скрипты? Нужно использовать многопоточность! Начал гуглить. Perl, нити :) Нити-нити! :) Много инфы, мануалы на английском... не очень понятно... разбираюсь... Очередная ссылка, попадая на блог, где чел прям совсем доступно рассказывает про эти самые нити. С базовым пониманием уже можно приступать к изучению крутых мануалов. Собственно ссылко http://nopox.wordpress.com/2007/11/06/multithreading-in-perl-part-2/
И первая моя прога с нитями. Цепляется к массиву хостов по телнет, вытягивает принтаут комманды date.
use threads; #Подключаем модуль нитей
use Net::Telnet; #Модуль Telnet
@sgsns=('172.26.18.163', '172.26.18.164', '172.26.18.165', '172.26.18.166');
$login="log";
$password="pass";
#Создаём столько нитей, сколько у нас элементов в массиве @sgsns
for ($i=0; $i<=$#sgsns; $i++) {
push @threads, threads->create(\&sub1, $sgsns[$i], $login, $password)
}
foreach $thread (@threads) {
$thread->join(); #Сообщаем главной программе,
} #чтоб дожидалась выполнения нити
sub sub1 {
my @InboundParameters = @_;
my $host = $InboundParameters[0];
my $login = $InboundParameters[1];
my $password = $InboundParameters[2];
my $fd=new Net::Telnet (Timeout => 30 , Prompt => '/[\$%#>] $/');
$fd->open($host);
$fd->login($login,$password);
my @lines1=$fd->cmd("date");
print "$host\: @lines1";
print "\n";
}
Имеется много хостов. Периодически нужно цеплятся к каждому и вытягивать какой-нить принтаут или просто давать какаю-нить команду, да так, чтоб одновременно. Множить скрипты? Нужно использовать многопоточность! Начал гуглить. Perl, нити :) Нити-нити! :) Много инфы, мануалы на английском... не очень понятно... разбираюсь... Очередная ссылка, попадая на блог, где чел прям совсем доступно рассказывает про эти самые нити. С базовым пониманием уже можно приступать к изучению крутых мануалов. Собственно ссылко http://nopox.wordpress.com/2007/11/06/multithreading-in-perl-part-2/
И первая моя прога с нитями. Цепляется к массиву хостов по телнет, вытягивает принтаут комманды date.
use threads; #Подключаем модуль нитей
use Net::Telnet; #Модуль Telnet
@sgsns=('172.26.18.163', '172.26.18.164', '172.26.18.165', '172.26.18.166');
$login="log";
$password="pass";
#Создаём столько нитей, сколько у нас элементов в массиве @sgsns
for ($i=0; $i<=$#sgsns; $i++) {
push @threads, threads->create(\&sub1, $sgsns[$i], $login, $password)
}
foreach $thread (@threads) {
$thread->join(); #Сообщаем главной программе,
} #чтоб дожидалась выполнения нити
sub sub1 {
my @InboundParameters = @_;
my $host = $InboundParameters[0];
my $login = $InboundParameters[1];
my $password = $InboundParameters[2];
my $fd=new Net::Telnet (Timeout => 30 , Prompt => '/[\$%#>] $/');
$fd->open($host);
$fd->login($login,$password);
my @lines1=$fd->cmd("date");
print "$host\: @lines1";
print "\n";
}
Комментариев нет:
Отправить комментарий