Autor Zpráva
Dulus
Profil
zdravím
Takže spúšťam nmap na skenovanie siete a výstup nmap-u mám naparsovaný do premennej $lines .
Čo je pre mňa dôležité v tomto výstupe je IP adresa a jej príslušné riadky v tvare napr: "22/tcp open ssh"
Výstup nmap-u vyzerá cca tak ako je uvedené nižšie, jednotilivých ip a teda blokov výstupu tam môže byt aj viac nie iba dva
Starting Nmap 5.00 ( http://nmap.org ) at 2012-04-19 20:08 CEST
Interesting ports on 192.168.70.6:
Not shown: 1022 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
23/tcp open  telnet

Interesting ports on 192.168.70.25:
Not shown: 1021 closed ports
PORT    STATE SERVICE
21/tcp  open  ftp
80/tcp  open  http
443/tcp open  https

Nmap done: 256 IP addresses (2 hosts up) scanned in 7.27 seconds
Takže potreboval som sparsovat "cislo_portu/protokol stav nazov"

môj kód, ktorý toto parsuje je >
$port_mappings = preg_grep('!^\d+/\S+ +\S+ !', $lines); // get the interesting lines
        $parsed_port_mappings = array();
        foreach($port_mappings as $port_mapping)
        {
            preg_match('!^(?P<port>\d+)/(?P<protocol>\S+) +(?P<state>\S+) +(?P<service>\S+)!', $port_mapping, $parsed_port_mappings[]);
        } 
čiže mám sparsované všetky riadky v tvare "cislo_portu/protokol stav nazov"

ak chcem pristúpiť ku nejakej konkrétnej hodnote tak $parsed_port_mappings[X]['Y'] kde X je čislo riadku v tvare "cislo_portu/protokol stav nazov" a Y je jedna z možností port/protocol/state/service .

Problém je že neviem, ktoré riadky patria ku ktorej ip adrese a teda by sa mi hodil nejaký systém ako sparsovat ip adresy (nejaký regex [tie mi veľmi nejdú]) a ku nemu prislúchajúce riadky v tvare "cislo_portu/protokol stav nazov". Predtym tam bol vždy iba jeden blok výstupu a to nebol problém, lebo IP adresu som mal z vstupného poľa. teraz tam môže byť tých blokov viac a preto musím parsovať už aj IP z výstupu.
Snáď sa chápeme. Proste potrebujem sparsovat tie ip adresy a ku nim nejak potom roztriediť dané prislúchajúce riadky s tými portami. Parsovanie tých riadkov mi funguje v pohode, ale neviem nejak sparsovat tie ip adresy a náslende k nim priradiť prísluchajúce riadky.
Dik za pomoc dopredu.
Davex
Profil
Nestálo by za zvážení, zvolit pro výstup nmapu nějaký lépe strojově zpracovatelný formát (třeba XML)?
Dulus
Profil
Keby to bolo na mne tak urcite pouzijem XML (jednoduchsie a menej pripadnych chyb), ale zadavatel si urcil ze chce mat "kompatibilitu s vystupmi skopirovanymi s konzoly" teda v tvare aky je tu. Preto tie komplikacie.

Ale myslim, ze sa mi to uz podarilo ako tak vyriesit, skusim este potestovat a ked tak tu pastnem riesenie, lebo funguje to ale niekde tam mam v cykloch nejaku chybu co mi robi prazdne pozicie v poli.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: