Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 как получить данные о системе   Denis Savostjanov   24 Feb 2002 19:27:35 
 Re: как получить данные о системе   Victor Wagner   24 Feb 2002 20:43:24 
 Re: как получить данные о системе   Denis Savostjanov   24 Feb 2002 23:37:57 
 Re: как получить данные о системе   Victor Wagner   25 Feb 2002 11:59:07 
 Re: как получить данные о системе   Nikolay Pichtin   25 Feb 2002 15:03:10 
 Re: как получить данные о системе   Denis Savostjanov   27 Feb 2002 01:10:06 
Архивное /ru.perl/18133c7a448d.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional