пятница, 25 декабря 2009 г.

PHP redirection

Очень удобная штука. Редиректит на http://172.26.18.179/cacti/

$ref=$_SERVER['QUERY_STRING'];
if ($ref!='') $ref='?'.$ref;
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://172.26.18.179/cacti/'.$ref);
exit();
?>

среда, 2 декабря 2009 г.

Perl Threads многопоточность

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";

}

вторник, 1 декабря 2009 г.

Apache, PHP, PostgeSQL на Solaris 10

Решил потестить, что за зверь такой. Пару раз приходилось поднимать сию базу на линуксах под 1С. Особо желания и времени изучить её не было. Была чёткая последовательность, какой за каким rpm пакет разворачивать. Пришло время :).
Имеется сервак с Solaris 5.10. На нём крутятся разнообразные php приложения, скрипты, собирающие статистику и заливающие её в mysql базу... Чтож, скачал исходник. Развернул. С устновкой самой postgre проблем не было. Стандартные ./configure ; make ; make install. Надо ж и веб морду прикрутить. Качаю phpPgAdmin, разворачиваю в апачевкий DocumentRoot, набираю в браузере заветную строку... :) Тра-ля-ля у вас php собран без ключа --with-pgsql. Грустно... Ищу откуда я ставил php. Вроде бы нашёл. Даю make uninstall, а сей прекраснейший скрипт не знает такого :(. В общем и целом, несколько раз я собирал php, вродеб он даже заливался в нужный каталоги... Короче говоря решил я в конце концов переставить связку apache2+php5, да так, чтоб всё с исходников. Apache у меня стоял пакетом. Собственно хотел зарисовать флаги для configure скрипта.

Apache2:

./configure --prefix=/usr/local/apache2 --enable-mods-shared=all --enable-ssl=shared --enable-ssl --with-ssl=/usr/local/ssl --enable-proxy --enable-proxy-connect --enable-proxy-ftp --enable-proxy-http --enable-so

make ; make install

PHP5:

./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql/ --with-pgsql=/usr/local/pgsql/ --with-zlib --enable-sockets

make ; make install

Вот собственно говоря и всё :)