Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Помогите написать маленькую программку.


Автор: MrD 16.3.2009, 16:44
Помогите...нужно написать программу на языке Perl которая будет из списка айпишников выделять (красным цветом) потерянный, или удалённый ip и высылать на определенный мэил. Я сам в программирование ничего не шарю((( и рад бы научиться. но времени совсем нету. помогите пожалуйсто сделать эту прогу. нужно срочно. и нужно хотя бы краткое описание как это делается. помогите пожалуйсто...оч надо.
и простите если не туда тему создал я тут первый раз...извиняюсь заранее smile 

Автор: arto 16.3.2009, 16:49
50€

Автор: tolkien 16.3.2009, 18:52
MrD
Хорошая попытка )

Автор: MrD 16.3.2009, 20:16
Цитата(tolkien @ 16.3.2009,  18:52)
MrD
Хорошая попытка )

в смысле хорошая попытка?

Автор: shamber 16.3.2009, 21:10
в смысле бесплатно, это никому не нужно.
Здесь помогают решать проблемы, а для таких запросов как  Ваш есть специальный раздел РАБОТА

Автор: MrD 16.3.2009, 21:21
хммм...ну мало ли...кто нибудь бы помог б... smile 

Автор: shamber 16.3.2009, 21:30
MrD, в раздел работа, цена вопроса 0$ может кто откликнется ;)
 smile 

Автор: NuINu 16.3.2009, 21:43
Цитата(MrD @  16.3.2009,  14:44 Найти цитируемый пост)
и рад бы научиться. но времени совсем нету


smile да да - ключевая фраза, как будто у кого другого есть лишнее время.

Автор: shamber 16.3.2009, 21:44
smile 
Скажу даже больше
лишнего времени вообще не существует smile

Добавлено @ 21:46
зы smile
времени не существует

Автор: MrD 16.3.2009, 22:10
Цитата(shamber @ 16.3.2009,  21:44)
smile 
Скажу даже больше
лишнего времени вообще не существует smile

Добавлено @ 21:46
зы smile
времени вообще не существует

ЕЕее мне нравятся эти слова...) в них глаголит правда smile 

Автор: WolfAlone 17.3.2009, 09:49
Уважаемый MrD, пишите мне в аську: 232-010-606, попробуем решить Ваш вопрос.

P.S. Ключевое слово: попробуем. Жду...

Автор: shamber 17.3.2009, 10:27
MrD, толькоhttp://forum.vingrad.ru/index.php?showtopic=251602&view=findpost&p=1814336 smile

Автор: gcc 17.3.2009, 12:00
arto, злой человек, 1 строка = 50€ ?  smile 

Автор: MrD 17.3.2009, 12:09
Цитата(gcc @ 17.3.2009,  12:00)
arto, злой человек, 1 строка = 50€ ?  smile

кризис в стране) все жадные. smile 

Автор: shamber 17.3.2009, 12:14
 smile 
MrD, не все

Автор: MrD 17.3.2009, 13:21
Цитата(shamber @ 17.3.2009,  12:14)
smile 
MrD, не все

 smile Во всём есть исключения  smile 

Автор: NuINu 17.3.2009, 16:26
Цитата(gcc @  17.3.2009,  10:00 Найти цитируемый пост)
arto, злой человек, 1 строка = 50€ ?  smile  


не правда, к этой строчке прилагается балончик с красной краской, а расходники нынче дорогие.
так что это не от arto зависит.

Автор: MrD 17.3.2009, 16:56
Цитата(NuINu @ 17.3.2009,  16:26)
Цитата(gcc @  17.3.2009,  10:00 Найти цитируемый пост)
arto, злой человек, 1 строка = 50€ ?  smile  


не правда, к этой строчке прилагается балончик с красной краской, а расходники нынче дорогие.
так что это не от arto зависит.

 smile  smile  smile    smile 

Автор: shamber 17.3.2009, 17:06
Цитата(NuINu @  17.3.2009,  16:26 Найти цитируемый пост)
расходники нынче дорогие

просто убил  smile 

Автор: gcc 18.3.2009, 07:31
   
Поиск ip адреса в тексте


Код

#!perl
my $str = '1.2.3.4 ggg 1.2.3.4 hghg 5.6.7.8 ghg';
my $hash;
$hash->{$1} ++ while $str =~ /(\d+\.\d+\.\d+\.\d+)/smg;
#либо вывести
print join "\n", sort keys %$hash; 
#либо, конечно, можно в массив 
my @ip_list= sort keys %$hash;



Код


#!/usr/bin/perl
$a = 'Hello my subnet, my adress is 192.157.3.4 ellite adress';
$a =~ /(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})/g;
print $1;





Код

/(\d{1,3}(?:\.\d{1,3}){3})/g 





Код

$hash->{$1} ++ while $str =~ /(\d+\.\d+\.\d+\.\d+)/smg xor grep {$_>255} split /\./,$1;




Код

#!/usr/bin/perl
$a = 'Hello my subnet, my adress is 192.157.3.4 ellite adress';
$b = '\d{1,3}.' x 4;
$a =~ /($b)/go;
print $1;

Автор: amg 18.3.2009, 13:08
gcc, насколько я понял задачу топикстартера, речь идет не о том, чтобы найти в тексте нечто похожее на IP (это легко), а из списка IP найти битые/неживые. Последнее -- тоже несложно, но муторно. Это надо на список IP напустить что-нибудь вроде Net::Ping, но не просто так, а распаралелить (иначе будет долго). Кстати, MrD, если задача действительно такова, то в Net::Ping в качестве примера есть скрипт, который делает такой массированный пинг. Можно его взять за основу.

Автор: MrD 18.3.2009, 14:41
Цитата(amg @ 18.3.2009,  13:08)
gcc, насколько я понял задачу топикстартера, речь идет не о том, чтобы найти в тексте нечто похожее на IP (это легко), а из списка IP найти битые/неживые. Последнее -- тоже несложно, но муторно. Это надо на список IP напустить что-нибудь вроде Net::Ping, но не просто так, а распаралелить (иначе будет долго). Кстати, MrD, если задача действительно такова, то в Net::Ping в качестве примера есть скрипт, который делает такой массированный пинг. Можно его взять за основу.

основа есть. но это только первый шаг  smile  благодарю всех кому не лень и он помогает. smile 

Автор: NuINu 18.3.2009, 14:50
Цитата(MrD @  18.3.2009,  12:41 Найти цитируемый пост)
благодарю всех кому не лень и он помогает


я бы назвал это не помогает: а делает вместо тебя smile
Впрочем это конечно же его личное дело smile

Автор: MrD 18.3.2009, 15:49
Цитата(NuINu @ 18.3.2009,  14:50)
Цитата(MrD @  18.3.2009,  12:41 Найти цитируемый пост)
благодарю всех кому не лень и он помогает


я бы назвал это не помогает: а делает вместо тебя smile
Впрочем это конечно же его личное дело smile

ну говорю ж я нубас в этом дела! smile  умел б хоть чёто давно уж замутил. вот  smile  

Автор: amg 18.3.2009, 16:26
Цитата(NuINu @  18.3.2009,  14:50 Найти цитируемый пост)
я бы назвал это не помогает: а делает вместо тебя.  Впрочем это конечно же его личное дело 
Э... Если речь обо мне, то я не собираюсь писать скрипт, а всего лишь дал совет.

MrD, программа, о которой я говорил выше, оказывается, отсутствует в последних версиях Net::Ping, но есть в более ранней: http://search.cpan.org/~bbb/Net-Ping-2.31/demo/fping
Посмотрите, может ее фунционалитета Вам уже хватит.

Автор: gcc 19.3.2009, 04:12
примерно так, если system возвращает 1,  при верном:
Код

 open(USER,"$filepath/$file");
    @userdata = <USER>;
    foreach $item (@userdata){
 $ping = system ("/bin/ping -c2 $item 2>&1");

 if ($ping > 0) {
 print "$_\n";
 } 

}

Автор: Cyr 9.3.2014, 15:48
Помогите написать декодер ASN.1 ber на перле.
с использованием Convert::ASN1.

Автор: arto 10.3.2014, 08:51
200€

Автор: Cyr 10.3.2014, 14:40
Цитата(arto @ 10.3.2014,  08:51)
200€

могу дать 3000 руб.

Автор: arto 10.3.2014, 15:37
btw, что такое ber? Berber language (ISO 639 alpha-3, ber)?
может der http://en.wikipedia.org/wiki/Distinguished_Encoding_Rules#DER_encoding?

если моя догадка верна, то вот вам бесплатная подсказка:
# openssl x509 -in CERT1.pem -outform DER | perl -0777 -MConvert::ASN1=asn_dump -lne 'asn_dump($_)' 
0000  802: SEQUENCE {
0004  721:   SEQUENCE {
0008    3:     [CONTEXT 0] {
000A    1:       INTEGER = 2
000D     :     }
000D   10:     INTEGER = -1
0019    8:     SEQUENCE {
001B    6:       OBJECT ID = 1.2.643.2.2.3
0023     :     }
0023  101:     SEQUENCE {
0025   32:       SET {
0027   30:         SEQUENCE {
0029    9:           OBJECT ID = 1.2.840.113549.1.9.1
0034   17:           [UNIVERSAL 22]
0036     :             69 6E 66 6F 40 63 72 79 70 74 6F 70 72 6F 2E 72 [email protected]
0046     :             75 __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ u
0047     :         }
0047     :       }
0047   11:       SET {
0049    9:         SEQUENCE {
004B    3:           OBJECT ID = 2.5.4.6
0050    2:           [UNIVERSAL 19]
0052     :             52 55 __ __ __ __ __ __ __ __ __ __ __ __ __ __ RU
0054     :         }
0054     :       }
...

Автор: Cyr 10.3.2014, 15:49
Цитата(arto @ 10.3.2014,  15:37)
btw, что такое ber? Berber language (ISO 639 alpha-3, ber)?
может der http://en.wikipedia.org/wiki/Distinguished_Encoding_Rules#DER_encoding?

если моя догадка верна, то вот вам бесплатная подсказка:
# openssl x509 -in CERT1.pem -outform DER | perl -0777 -MConvert::ASN1=asn_dump -lne 'asn_dump($_)' 
0000  802: SEQUENCE {
0004  721:   SEQUENCE {
0008    3:     [CONTEXT 0] {
000A    1:       INTEGER = 2
000D     :     }
000D   10:     INTEGER = -1
0019    8:     SEQUENCE {
001B    6:       OBJECT ID = 1.2.643.2.2.3
0023     :     }
0023  101:     SEQUENCE {
0025   32:       SET {
0027   30:         SEQUENCE {
0029    9:           OBJECT ID = 1.2.840.113549.1.9.1
0034   17:           [UNIVERSAL 22]
0036     :             69 6E 66 6F 40 63 72 79 70 74 6F 70 72 6F 2E 72 [email protected]
0046     :             75 __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ u
0047     :         }
0047     :       }
0047   11:       SET {
0049    9:         SEQUENCE {
004B    3:           OBJECT ID = 2.5.4.6
0050    2:           [UNIVERSAL 19]
0052     :             52 55 __ __ __ __ __ __ __ __ __ __ __ __ __ __ RU
0054     :         }
0054     :       }
...

arto, у меня бинарник (пакет) от АТС. Протокол там CSTA (ASN.1 ber). есть даже файл с определениями asn1.
Сколько не бился, сколько не пробовал готовые pm. не выходит ни фига. утилитой unber из asn1c я получил тоже что и вы мне тут показали. Но надо перлом эту структуру ещё заполнить определениями из файла asn1.

Автор: arto 11.3.2014, 09:46
В дистрибутиве Convert::ASN1 идёт пример x509decode, он рабочий:

# perl x509decode server-cert.der
$VAR1 = {
  "signature" => [
    "\"\254\263\240g\353\302\@6\232Vq \374.K=\333\261\203\363\226Z3\233\3333\336R\334\234\2006x\233\343\220\352c\314\f\254\17\275\1 &\217G'\203#\251\220\266\256\\\330< '\312\4\264^\233\205\3744\257^\221`;\322\337\267\6\256\343\1\t\37\211\257\n\30\n?\357C\326=n\26t2\263\6\360\212\364\200a\367\361\203\205\350,\35\270\203\366\201\207\263\315+\13\210\32\371?\25w;\314",
    1024
  ],
  "tbsCertificate" => {
    "subject" => {
      "rdnSequence" => [
        [
          {
            "type" => "2.5.4.6",
            "value" => {
              "printableString" => "DE"
            }
          }
        ],
        [
          {
            "value" => {
              "printableString" => "Bayern"
            },
            "type" => "2.5.4.8"
          }
        ],
...

Посмотрите и сделайте, как там описано, должно помочь.

ps. для asn.1 схему для гостового сертификата не нашёл, поэтому использовал стандартный rsa сертификат.

Автор: Cyr 11.3.2014, 11:49
arto, давай начнём сначала.
Вот мой код (бинарник обрабатываемого пакета прикрёплён к сообщению):
Код

use Convert::ASN1;
use Data::Dumper; 
open (infile, "114-111.bin") or die "Ошибка открытия файла: $!";
read infile, $head, 2; # первые 2 байта - длина
$len = unpack('n',$head);
read infile, $pdu, $len;
close infile;
my $decode_pdu = Convert::ASN1->new;
#$Data::Dumper::Indent = 1;
print Dumper( $decode_pdu->decode($pdu)); 

выводит
$VAR1 = undef;
что я делаю не так?

Автор: arto 11.3.2014, 14:22
Net::CSTA и Net::CSTA::ASN не помогут?

Автор: Cyr 11.3.2014, 18:28
Цитата(arto @ 11.3.2014,  15:22)
Net::CSTA и Net::CSTA::ASN не помогут?

Может и помогут, только я не знаю с какой стороны к ним подступить ?
Как ими декодировать бинарник?

Автор: arto 12.3.2014, 00:07
посмотреть как сделана и загружена грамматика и система типов, затем запустить decode.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)