The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"perl script"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"perl script" 
Сообщение от torre75 emailИскать по авторуВ закладки on 18-Авг-05, 14:08  (MSK)
есть вот такой скриптик корый записывает в файл ip, link, date, hostname узера котрый нажал на определенй линк. На самом деле скрипт сделан из двух:1. записывает ip,link, date.
2. по ip определяет hostname.
Теперь в первый скрипт добавляю sub hostname что бы в файл записывался и hostname.
проблема в том что отдельно они работают нормально а когда связываю в одном ip,link,date записывает а hostname - нет.
вот что получилось:
#!/usr/bin/perl -w
use Socket;
#use strict;
$UNIX = 1;
# If you are not running this on a UNIX platform set $UNIX = 0; instead
$path = ".";
# The system path to the log file. Leave as a "." if in the same folder
# as this script.
$datafile = "fail.txt";
# The filename of the log.
$datestyle = "1";
# Set to 1 if you want month to appear first in the date string
#################################
# End of user editable section  #
#################################
&read;
$link = $input{'link'};
&read_date;
$ipnumber = $ENV{'REMOTE_ADDR'};
my $host_name =hostname($ipnumber);
####################################
if ((($datestyle eq "1")))
{ $datenow = "$day/$month/$h:$m:$s"; }
else {$datenow = "$day/$month";}
open (FI, ">>$path/$datafile");
if ((($UNIX eq "1"))) { flock (FI, 2); }
print FI "$ipnumber   $link    $datenow  $hostname\n";
if ((($UNIX eq "1"))) { flock (FI, 8); }
close (FI);
print "Location: $link\n\n";
exit;
sub read
{
if ($ENV{'CONTENT_LENGTH'}){read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});}
elsif ($ENV{'QUERY_STRING'}){$buffer = $ENV{'QUERY_STRING'};}
if ($buffer) {@pairs = split(/&/, $buffer);
foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $input{$name} = $value; } }
}

sub read_date
{
($s, $m, $h, $day, $month, $year, $dw, $date, $dl) = localtime(time());
$month++;
}

sub hostname
{
  my (@bytes, @octets,
  $packedaddr,
  $raw_addr,
  $host_name,
  $ip
  );
  if($_[0] =~ /[a-zA-Z]/g) {
   $raw_addr = (gethostbyname($_[0]))[4];
   @octets = unpack("C4", $raw_addr);
   $host_name = join(".", @octets);
   } else {
   @bytes = split(/\./, $_[0]);
   $packedaddr = pack("C4",@bytes);
   $host_name = (gethostbyaddr($packedaddr, 2))[0];
   }
   return($host_name);
   }

кто скажет где ошибка?
заранее благодарен

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

  • perl script, eleo, 14:28 , 18-Авг-05, (1)  

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "perl script" 
Сообщение от eleo Искать по авторуВ закладки(ok) on 18-Авг-05, 14:28  (MSK)
>my $host_name =hostname($ipnumber);

>print FI "$ipnumber   $link    $datenow  $hostname\n";

разные скаляры

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру