Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ip2country 
:(
    Опции темы
dixoNICH
Дата 10.9.2011, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 222
Регистрация: 20.3.2011

Репутация: нет
Всего: нет



отправляю айпи на сервер, получаю в ответ лишь "% This is the RIPE Database query service."
понимаю, что с перлом мало, что связано, но пишу именно на перле smile
PM MAIL   Вверх
arto
Дата 11.9.2011, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



абсолютно непонятная фраза
PM MAIL ICQ   Вверх
dixoNICH
Дата 11.9.2011, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 222
Регистрация: 20.3.2011

Репутация: нет
Всего: нет



какая именно?
отправляю на whois.rip.net, например, айпи, в ответ не получаю информацию об этом айпи, а получаю лишь приветствие от сервера.
PM MAIL   Вверх
vadiml
Дата 11.9.2011, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 27.7.2007

Репутация: 5
Всего: 7



whois.rip.net отвечает только на имена доменов, а не ip
=======
telnet whois.ripn.net 43
Trying 212.193.111.1...
Connected to whois.ripn.net.
Escape character is '^]'.
qq.ru
% By submitting a query to RIPN's Whois Service
% you agree to abide by the following terms of use:
% http://www.ripn.net/about/servpol.html#3.2 (in Russian) 
% http://www.ripn.net/about/en/servpol.html#3.2 (in English).

domain:     QQ.RU
nserver:    ns1.dsredirection.com.
nserver:    ns2.dsredirection.com.
state:      REGISTERED, DELEGATED, VERIFIED
org:        LTD "NETEX GALAXY"
phone:      +371 26778964
e-mail:     [email protected]
registrar:  RU-CENTER-REG-RIPN
created:    1999.08.10
paid-till:  2012.09.01
source:     TCI

Last updated on 2011.09.11 14:40:46 MSK/MSD

Connection closed by foreign host.
========

А ответы по IP отдаёт например NSI registry


PM MAIL Jabber   Вверх
dixoNICH
Дата 11.9.2011, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 222
Регистрация: 20.3.2011

Репутация: нет
Всего: нет



Код

use strict;
use IO::Socket::INET; 
my ($socket,$host, $port, $ip, $hi;
eval {
$socket =   IO::Socket::INET->new (
                    PeerAddr => "whois.RIPE.net",
                    PeerPort => 43,
                    Proto => "tcp",
                    Type => SOCK_STREAM)
                    or die "Can't connect to $host:$port\n"; };
my $hi = <$socket>;
print $socket "vk.com";
print $hi;

в общем, чтобы я не отправлял, ответ один и тот же - приветствие
PM MAIL   Вверх
vadiml
Дата 11.9.2011, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 27.7.2007

Репутация: 5
Всего: 7



http://cpansearch.perl.org/src/DESPAIR/Net...et/Whois/Raw.pm

Смотрите функцию whois_query(), в  т.ч.  особенно 
while (my $str = <$sock>) {


Это сообщение отредактировал(а) vadiml - 11.9.2011, 15:28
PM MAIL Jabber   Вверх
dixoNICH
Дата 11.9.2011, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 222
Регистрация: 20.3.2011

Репутация: нет
Всего: нет



там используются модули сторонние smile
PM MAIL   Вверх
vadiml
Дата 11.9.2011, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 27.7.2007

Репутация: 5
Всего: 7



Да, IO::Socket::INET, как и у Вас.

Я Вам не зря говорил обратить внимание на while.

Вот рабочий вариант Вашего примера:
Код

#!/usr/bin/perl -w

use strict;
use IO::Socket::INET; 
my $socket;
my $host = "whois.ripn.net";
my $port = 43;
my @lines;
eval {
    $socket =   IO::Socket::INET->new ( 
    PeerAddr => $host,
    PeerPort => $port,
    )
    or die "Can't connect to $host:$port\n"; 

    $socket->print( "qq.ru\r\n" );

    while  ( my $str = <$socket> ) {
    print $str;
    }

    $socket->close;
};


> в общем, чтобы я не отправлял, ответ один и тот же - приветствие 

т.к. это первая строка.

PM MAIL Jabber   Вверх
dixoNICH
Дата 11.9.2011, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 222
Регистрация: 20.3.2011

Репутация: нет
Всего: нет



спасибо! вопрос : для чего eval?
и почему в $1 ничего не лежит?
Код

use IO::Socket::INET; 
my ($port, $socket, $f, $inf) = 43;
my @servers = ('ARIN', 'APNIC', 'LACNIC', 'RIPE');
for my $host(@servers) {
    eval {
         $socket =   IO::Socket::INET->new ( 
         PeerAddr => "whois.$host.net",
         PeerPort => $port,
         ) or die "Can't connect to whois.$serv.net\n"; 
        $socket->print( "87.240.188.250\r\n" );
        $inf .= $f while $f = <$socket>;
        $socket->close;
    };
}
$inf = ~/country:\s*(.*)/;
print $1;


PM MAIL   Вверх
vadiml
Дата 11.9.2011, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 27.7.2007

Репутация: 5
Всего: 7



> для чего eval?

Для timeout, я там забыл дописать alarm дописать, посмотри в модуле по ссылке

> почему в $1 ничего не лежит?

Поробуйте вместо
$inf = ~//
написать
$inf =~ //


И ещё, в Вашем последнем скрипте замените $serv на $host, если вначале файла допишите
#!/usr/bin/perl
или ниже
use warning;

То Вам напишет:
Name "main::serv" used only once: possible typo at script_name.pl line 12.

Это сообщение отредактировал(а) vadiml - 11.9.2011, 21:12
PM MAIL Jabber   Вверх
dixoNICH
Дата 11.9.2011, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 222
Регистрация: 20.3.2011

Репутация: нет
Всего: нет



Use of uninitialized value $1 in print at ip2c.pl line 18.

выдаёт ошибку.
PM MAIL   Вверх
dixoNICH
Дата 12.9.2011, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 222
Регистрация: 20.3.2011

Репутация: нет
Всего: нет



разобрался, выводит AU.
но, данный айпи (87.240.188.250) - это вконтакт. почему AU?
Код

use IO::Socket::INET; 
use strict;
use warnings;
my ($port, $timeout, $socket, $f, $inf, $ip, $bool) = (43, 2);
$ip = $ARGV[0];
die "Wrong IP Address !!!"unless$ip =~/\d+\.\d+\.\d+\.\d+/;
my @servers = ('ARIN', 'APNIC', 'LACNIC', 'RIPE');
for my $host(@servers) {
    eval {
    local $SIG{ALRM} = sub{die "alarm\n";};
    alarm $timeout;
    $socket =   IO::Socket::INET->new ( 
                    PeerAddr => "whois.$host.net",
                    PeerPort => $port,
    ) or die "Can't connect to whois.$host.net\n"; 
        $socket->print( "87.240.188.250\r\n" );
        $inf .= $f while $f = <$socket>;
        $socket->close;
    };
    alarm 0;
}
if($@) {die unless $@ eq "alarm\n";}
#print$inf;
$inf =~/country:\s+(\w\w)\nadmin-c/s;print$1;

PM MAIL   Вверх
arto
Дата 13.9.2011, 07:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



потому что читать надо все:

inetnum:      87.0.0.0 - 87.255.255.255
netname:      RIPE-CIDR-BLOCK
descr:        Not allocated by APNIC

PM MAIL ICQ   Вверх
dixoNICH
Дата 13.9.2011, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 222
Регистрация: 20.3.2011

Репутация: нет
Всего: нет



да, я уже заметил smile а как мне определять страну для хоста, который я хочу, а не страну whois сервера? 
PM MAIL   Вверх
arto
Дата 13.9.2011, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



либо использовать netname, либо лезть в http://www.iana.org/assignments/ipv4-address-space, либо использовать конфигурацию из jwhois.
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0539 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.