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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> парсинг ип адресов 
:(
    Опции темы
ISQman
Дата 23.7.2008, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Доброго времени суток, я столкнулся с такой проблемкой: 

вот рабочий скриптик думаю пояснений не надо что он делает

Код


#!/usr/bin/perl

use Net::Telnet;

$pass="xxxx";
$comand="show ip bgp";
$port="2605";
$server="127.0.0.1";
$file="./file.log";

my $cmd=$comand;
my $t = new Net::Telnet (Timeout  => 5,
                         Prompt   => '/[\>\#] $/',
                         Port     => $port);

$t->open($server);
$t->cmd("$pass");
@list = $t->cmd("$comand");

$ip=scalar(@list);
@iplist=@list[5..$ip-5]; #тут я просто срезаю левое)
                         #работает вроде нормально

open (LOG_IP, ">$file") || die "$!";
if (! print LOG_IP "@iplist"){
    warn "owubka zapisi";
}
close (LOG_IP);
print @iplist;
print "\n";
exit;



а теперь вопрос:
как отпарсить полученые ипы из массива или из текстового документа?
PS я на перле только учусь...
PS извиняюсь за бок, вот теперь чистый

Это сообщение отредактировал(а) ISQman - 23.7.2008, 17:45
PM MAIL ICQ   Вверх
amg
Дата 23.7.2008, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Ничего не понятно. Как выглядят данные, которые нужно "отпарсить"? (Что есть, что нужно получить).
И что означает
Код

while (my $iplist[1]=$ips) {
    if $ips=join'',map{sprintf("%02x",$_)}@clear=~m/\d+/g;
    @iplist[1++];
}

PM MAIL   Вверх
tolkien
Дата 23.7.2008, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Он же написал что новичек. Ему лучше книжку скажи для чтения.
PM MAIL   Вверх
ISQman
Дата 23.7.2008, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



получается чтото типа этого:


*>                  193.39.118.233                     30000 41867 6846 i
 *> 62.16.0.0/19     195.66.200.115           0         20000 8192 8192 8192 i
 *> 62.221.37.0/24   195.66.200.115                     20000 8192 8192 8192 65001 ?
 *> 62.221.42.0/24   195.66.200.115                     20000 8192 8192 8192 65001 ?
 *> 62.221.43.0/24   195.66.200.115                     20000 8192 8192 8192 65001 ?
 *  78.26.128.0/18   195.66.200.115                     20000 8192 8192 8192 34187 i
 *                   194.107.117.4                 999  40000 44193 34187 i
 *>                  194.107.117.4                 999  40000 44193 34187 i
 *  78.26.192.0/18   194.107.117.4                 999  40000 44193 34187 i
 *>                  194.107.117.4                 999  40000 44193 34187 i
 *  78.109.16.0/20   195.66.200.115                     20000 8192 8192 8192 15595 41665 ?
 *>                  194.107.117.3                 999  40000 44193 41665 ?
 *> 79.140.0.0/20    195.66.200.115                     20000 8192 8192 8192 6876 i
 *  79.142.192.0/20  194.107.117.21                999  40000 44193 44291 ?
 *>                  194.107.117.21                999  40000 44193 44291 ?
 *> 80.90.224.0/20   195.66.200.115                     20000 8192 8192 8192 21149 i
 *> 80.90.224.0/24   195.66.200.115                     20000 8192 8192 8192 21149 i
 *> 80.90.225.0/24   195.66.200.115                     20000 8192 8192 8192 21149 i
 *> 80.90.226.0/24   195.66.200.115                     20000 8192 8192 8192 21149 i
 *> 80.90.227.0/24   195.66.200.115                     20000 8192 8192 8192 21149 i
 *> 80.90.228.0/24   195.66.200.115                     20000 8192 8192 8192 21149 i
 *> 80.90.229.0/24   195.66.200.115                     20000 8192 8192 8192 21149 i
 *> 80.90.230.0/24   195.66.200.115                     20000 8192 8192 8192 21149 43103 i
 *> 80.90.231.0/24   195.66.200.115                     20000 8192 8192 8192 21149 43103 i
 *> 80.90.232.0/22   195.66.200.115                     20000 8192 8192 8192 21149 i
 *> 80.90.236.0/24   195.66.200.115                     20000 8192 8192 8192 21149 43103 i
 *> 80.90.238.0/24   195.66.200.115                     20000 8192 8192 8192 21149 43103 i
 *> 80.90.239.0/24   195.66.200.115                     20000 8192 8192 8192 21149 43103 i
 *> 81.25.224.0/20   195.66.200.115                     20000 8192 8192 8192 15595 ?
 *> 81.25.224.0/24   195.66.200.115                     20000 8192 8192 8192 15595 ?
 *> 81.25.225.0/24   195.66.200.115                     20000 8192 8192 8192 15595 ?
 *> 81.25.226.0/24   195.66.200.115                     20000 8192 8192 8192 15595 ?
 *> 81.25.227.0/24   195.66.200.115                     20000 8192 8192 8192 15595 ?
 *> 81.25.228.0/24   195.66.200.115                     20000 8192 8192 8192 15595 ?
 *> 81.25.229.0/24   195.66.200.115                     20000 8192 8192 8192 15595 ?
 *> 81.25.230.0/24   195.66.200.115                     20000 8192 8192 8192

нужно отпарсить ипы с маской
PM MAIL ICQ   Вверх
amg
Дата 24.7.2008, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(ISQman @  23.7.2008,  17:45 Найти цитируемый пост)
получается чтото типа этого...
Я так понимаю, это исходные данные, к которыми нужно что-то сделать? Что именно? (Я не понимаю смысла фразы "нужно отпарсить ипы с маской". Парсить -- разбирать/анализировать/... Каким образом нужно парсить "ипы с маской", как должен выглядеть результат?)

PM MAIL   Вверх
ISQman
Дата 24.7.2008, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



нужно получить чтоот ворде этого, т.е. 1-я колонка айпишников...:
81.25.230.0/24
80.90.224.0/20
80.90.224.0/24
80.90.225.0/24
80.90.226.0/24
80.90.227.0/24
80.90.228.0/24
80.90.229.0/24
80.90.230.0/24
80.90.231.0/24
80.90.232.0/22
80.90.236.0/24
80.90.238.0/24
80.90.239.0/24
81.25.224.0/20
81.25.224.0/24
81.25.225.0/24
81.25.226.0/24
81.25.227.0/24
81.25.228.0/24
81.25.229.0/24
81.25.230.0/24
PM MAIL ICQ   Вверх
amg
Дата 24.7.2008, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Просто оставить "ипы с маской", остальное удалить?
@ip = map {/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,3}/g} @ip;

Это сообщение отредактировал(а) amg - 24.7.2008, 13:25
PM MAIL   Вверх
ISQman
Дата 24.7.2008, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



в идеале нужна просто первая колонка, но как я понял это сделать либо практически нереально либо както выделить их по пробелам О_о т.к. других разделяющих знаков там просто нету...
PM MAIL ICQ   Вверх
amg
Дата 24.7.2008, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(ISQman @  24.7.2008,  14:59 Найти цитируемый пост)
в идеале нужна просто первая колонка, но как я понял это сделать либо практически нереально либо както выделить их по пробелам О_о т.к. других разделяющих знаков там просто нету...
Очень даже реально, это то проще всего:
@ip = map {(split)[0]} @ip;

PM MAIL   Вверх
ISQman
Дата 24.7.2008, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



СПАСИБО ОГРОМНОЕ спасли реально)))
PM MAIL ICQ   Вверх
ISQman
Дата 25.7.2008, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



есть ещё вопросик, как удалить конкретый ип (группу ипов) в данном  случае?smile 

Это сообщение отредактировал(а) ISQman - 25.7.2008, 11:42
PM MAIL ICQ   Вверх
amg
Дата 25.7.2008, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(ISQman @  25.7.2008,  11:41 Найти цитируемый пост)
есть ещё вопросик, как удалить конкретый ип (группу ипов) в данном  случае?
ISQman, опять непонятно. Что за группа? Попробуем так:
Код
@ip = grep {! /\/20$/} @ip; # Удалить из получивнегося массива все IP с маской /20
@ip = grep {! /\/20$/} map {(split)[0]} @ip; # Можно и так

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


Шустрый
*


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

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



ок, поставим вопрос по другому... из полученого списка надо  удалить ип адреса 195.66.200.ххх это както можно реализовать? я имею в виду что от 195.66.200.0 до 195.66.200.255

Это сообщение отредактировал(а) ISQman - 25.7.2008, 15:00
PM MAIL ICQ   Вверх
amg
Дата 25.7.2008, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(ISQman @  25.7.2008,  14:58 Найти цитируемый пост)
ок, поставим вопрос по другому... из полученого списка надо  удалить ип адреса 195.66.200.ххх это както можно реализовать?
Да запросто. Взглянуть на предыдущий пример и делать по аналогии.
Код
@ip = grep {! /^195\.66\.200/} @ip


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


Шустрый
*


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

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



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


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

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


 




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


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

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