|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Nikolay Pichtin 2:5056/30 25 Feb 2002 15:03:10 To : "denis Savostjanov" Subject : Re: как получить данные о системе -------------------------------------------------------------------------------- >>> Далее, практически всю интересующую себя информацию браузер, >>> если пользователь ему явно не запретил (а если запретил, то >>> и Javascript он с тем же или даже большим успехом запретил) >>> сам тебе шлет в виде HTTP-заголовоков. Которые web-сервер >>> старательно помещает в environment твоего скрипта. Так что >>> они тебе более чем доступны, сразу, без всяких client-side >>> заморочек. DS>> Спасибо! А где почитать как их от туда вынуть? Вот скрипт, который выводит ENV, а так же установленные модули Perl = Вставка = #!/usr/bin/perl # use POSIX; ($sysname,$nodename,$release,$version,$machine) = POSIX::uname(); $font = "<FONT FACE=\"Verdana, sans serif\" SIZE=2>"; print "Content-type: text/html\n\n"; print "<HTML>\n <HEAD>\n <TITLE>System Dates</TITLE>\n </HEAD>\n<BODY>\n"; print qq~ <TABLE WIDTH=100% BGCOLOR=#FDB900 CELLPADDING=2 CELLSPACING=0 BORDER=0> <TR> <TH>$font<FONT SIZE=4>System</FONT></TH> </TR> </TABLE><P> <TABLE BORDER=0 CELLPADDING=3 WIDTH=100%> <TR><TD>$font On the server</TD><TD>$font$nodename</TD></TR> <TR><TD>$font Operating system is</TD><TD>$font$sysname</TD></TR> <TR><TD>$font Version</TD><TD>$font$version</TD></TR> <TR><TD>$font Release</TD><TD>$font$release</TD></TR> <TR><TD>$font Hardware is</TD><TD>$font$machine</TD></TR> </TABLE> ~; print qq~ <TABLE WIDTH=100% BGCOLOR=#FDB900 CELLPADDING=2 CELLSPACING=0 BORDER=0> <TR> <TH>$font<FONT SIZE=4>Содержимое массива %ARGV[]</FONT></TH> </TR> </TABLE><P> <TABLE BORDER=0 CELLPADDING=0 WIDTH=100%> ~; for ($i=0; $i <= $#ARGV; ++$i) { print " <TR><TD>$font", 'ARGV[$i]=',$ARGV[$i], "</TD></TR>\n"; } print "</TABLE>\n"; print qq~ <TABLE WIDTH=100% BGCOLOR=#FDB900 CELLPADDING=2 CELLSPACING=0 BORDER=0> <TR> <TH>$font<FONT SIZE=4>Содержимое массива %ENV{}</FONT></TH> </TR> </TABLE><P> <TABLE BORDER=0 CELLPADDING=0 WIDTH=100%> ~; while(($key,$val) = each(ENV)) { print "<TR><TD>$font$key: $val</TD></TR>\n"; } print "</TABLE>\n"; print qq~ <TABLE WIDTH=100% BGCOLOR=#FDB900 CELLPADDING=2 CELLSPACING=0 BORDER=0> <TR> <TH>$font<FONT SIZE=4>MODULES</FONT></TH> </TR> </TABLE><P> ~; &vars; print qq~ <TABLE WIDTH=100% BGCOLOR=#FDB900 CELLPADDING=2 CELLSPACING=0 BORDER=0> <TR> <TH>$font<FONT SIZE=4>Installed Modules</FONT></TH> </TR> </TABLE><P> <TABLE BORDER=0 CELLPADDING=3 WIDTH=100%> ~; find(\&wanted,@INC); $modcount = 0; foreach $line(@foundmods){ $match = lc($line); if ($found{$line}[0] >0){ $found{$line} = [$found{$line}[0]+1,$match]} else { $found{$line} = ["1",$match];$modcount++} } @foundmods = sort count keys(%found); sub count { return $found{$a}[1] cmp $found{$b}[1] } $third = $modcount/3; $count=0; print "<TR><TD WIDTH=33% VALIGN=TOP><TABLE BORDER=0 CELLPADDING=1>"; foreach $mod(@foundmods){ chomp $mod; $count++; if ($count <= $third){ print qq~<TR><TD>${font}$mod</TD></TR>~; } else {push (@mod1,$mod)}} print "</TABLE></TD><TD WIDTH=33% VALIGN=TOP><TABLE BORDER=0 CELLPADDING=1>"; $count = 0; foreach $mod1(@mod1){ chomp $mod1; $count++; if ($count <= $third){ print qq~<TR><TD>${font}$mod1</TD></TR>~; } else {push (@mod2,$mod1)}} print "</TABLE></TD><TD WIDTH=33% VALIGN=TOP><TABLE BORDER=0 CELLPADDING=1>"; $count = 0; foreach $mod2(@mod2){ chomp $mod2; $count++; if ($count <= $third){ print qq~<TR><TD>${font}$mod2</TD></TR>~; }}print qq~ </TABLE></TD></TR></TABLE><P><HR COLOR="#BF0425" SIZE=1> <TABLE WIDTH=100% BGCOLOR=#FDB900 CELLPADDING=2 CELLSPACING=0 BORDER=0"> <TR><TH ALIGN=RIGHT> <BR> </TD></TR></TABLE></BODY></HTML>~; print $ENV{'SCRIPT_FILENAME'}; print "</BODY>\n</HTML>\n"; exit; #------------------------- sub vars { $dev="Ingo"; use File::Find; $bgcolor = "GHOSTWHITE"; $program="CM"; $version="666";} sub wanted { $count = 0; if ($File::Find::name =~ /\.pm$/){ open(MODFILE,$File::Find::name) || return; while(<MODFILE>){ if (/^ *package +(\S+);/){ push (@foundmods, $1); last; } } } } = Вставка = -- Hиколай. * Губит людей не пиво, губит людей вода!!! #=----------------------------------====----------------------------------=# --- * Origin: Истина - это вовсе не то, что можно убедительно доказать (2:5056/30) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/18133c7a448d.html, оценка из 5, голосов 10
|