Portál AbcLinuxu, 10. května 2025 04:45

Dotaz: IP rozsah na regularni vyraz - linuxova utilita

BigWrigley avatar 2.12.2015 10:40 BigWrigley | skóre: 33
IP rozsah na regularni vyraz - linuxova utilita
Přečteno: 371×
Odpovědět | Admin
Ahoj, hledam nejakou utilitu, ktera by z rozsahu IP adres vygenerovala regularni vyraz. Neco jako tady, ale offline. Nejaky tip? Diky.

Ales
Linux is like a wigwam - no windows, no gates and Apache inside.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

BigWrigley avatar 2.12.2015 10:53 BigWrigley | skóre: 33
Rozbalit Rozbalit vše Re: IP rozsah na regularni vyraz - linuxova utilita
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pro predstavu:
10.125.0.5 - 10.235.2.5:

^10\.((1(2[5-9]|[3-9][0-9])|2([0-2][0-9]|3[0-4]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))|235\.(([0-1])\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))|2\.([0-5])))$
Linux is like a wigwam - no windows, no gates and Apache inside.
2.12.2015 13:14 blondak | skóre: 36 | blog: Blondak | Čáslav
Rozbalit Rozbalit vše Re: IP rozsah na regularni vyraz - linuxova utilita
ale zrovna tento regex matchne i 10.125.0.4 nebo třeba 10.125.2.254,...
Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
BigWrigley avatar 2.12.2015 13:27 BigWrigley | skóre: 33
Rozbalit Rozbalit vše Re: IP rozsah na regularni vyraz - linuxova utilita
Hm, netestoval jsem (chyba), ale mate, zda se pravdu...
Linux is like a wigwam - no windows, no gates and Apache inside.
Tarmaq avatar 2.12.2015 12:52 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: IP rozsah na regularni vyraz - linuxova utilita
Odpovědět | | Sbalit | Link | Blokovat | Admin
urcite by se ten generator nejak napsat dal, ale nebude jednodussi si to spocitat? dalo by se to udelat napr. takto:
class IPRange
{
    function __construct($begin, $end)
    {
        $this->begin = $this->compute($begin);
        $this->end = $this->compute($end);
    }
    private function compute($ip)
    {
        $rv = 0;
        foreach (array_reverse(explode('.', $ip)) as $i => $val) {
            $rv += intval($val) * pow(256, $i);
        }
        return $rv;
    }
    function contains($ip)
    {
        $val = $this->compute($ip);
        return $val >= $this->begin && $val <= $this->end;
    }
}

$range = new IPRange('10.125.0.5', '10.235.2.5');
var_dump($range->contains($ip));
PS: je to zjednoduseny, chybi tam nejaka validace ip adresy a mozna jsou tam i nejaky dalsi chyby ;]
Don't panic!
3.12.2015 15:38 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: IP rozsah na regularni vyraz - linuxova utilita
Odpovědět | | Sbalit | Link | Blokovat | Admin

<off_topic> No nevím, tak jsem do toho webového generátoru zkušebně zadal od fdcc:: do fdcc::7 a tvrdí to Invalid Ip Address: Must have 4 parts. No bezva, další nefunkční a nepoužitelná webová utilita. (Ano, jsem silně alergický na utility, distribuce nebo konfiguráky zamrzlé v 70. až 90. letech 20. století.) </off_topic>

3.12.2015 19:46 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: IP rozsah na regularni vyraz - linuxova utilita

Ono to i pro jakýkoli trochu netriviální IPv4 rozsah suše zahlásí, že výsledný regulární výraz by byl moc dlouhý pro ten Google Analytics filtr, takže je zřejmé, že je to zamýšleno jako jednoúčelová utilitka obcházející nedokonalost toho filtru.

Ruku na srdce, už ten příklad výše by měl každého, koho aspoň trochu zajímá efektivita, přimět, aby se zamyslel nad otázkou, jak je asi náročné otestovat, zda je IP adresa v určeném rozsahu, a jak je proti tomu náročné otestovat match její textové reprezentace proti tomu regulárnímu výrazu.

BigWrigley avatar 4.12.2015 13:48 BigWrigley | skóre: 33
Rozbalit Rozbalit vše Re: IP rozsah na regularni vyraz - linuxova utilita
Ja naprosto souhlasim, ale bohuzel mam aplikaci, kde ten rozsah v tuto chvili nemohu zadat jinak. Proto jsem po tom patral.
Linux is like a wigwam - no windows, no gates and Apache inside.
Řešení 1× (BigWrigley (tazatel))
BigWrigley avatar 5.12.2015 10:42 BigWrigley | skóre: 33
Rozbalit Rozbalit vše Re: IP rozsah na regularni vyraz - linuxova utilita

Alespon castecne reseni poskytuje utilita rgxg. Muze se to nekomu hodit:

$ rgxg cidr 192.168.0.0/23
192\.168\.[01]\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])

 

A.

Linux is like a wigwam - no windows, no gates and Apache inside.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.