Portál AbcLinuxu, 13. května 2025 23:30

Dotaz: Přesný grep IP v BASH

14.6.2009 13:18 CasperP
Přesný grep IP v BASH
Přečteno: 659×
Odpovědět | Admin

Mám problém a nějak jsëm se do toho už zamotal.

Soubor ipadresy.log v něm např 192.168.100.1 192.168.100.100  192.168.100.101

pokud použiju

HLEDEJIP=`iptables -L ...........`  #prostě něco v cyklu kde to bude hledat IP adresy.Dejme tomu že to najde momentálně 192.168.100.1

DATA=ipadresy.log

GREP=`grep $HLEJEJIP $DATA`

a zde je problém jelikož proměnou HLEDEJIP potřebuju aby hledal přesně to jest  '$HLEDEJIP' což mi bash skript nebere. Prosim popostrčte mě někdo dál.Hledal jsem hledal ale marně. Potřebuju aby proměná $GREP měla vždy přesný a jednoznačný výsledek.V tomto případě to nalezne všechny tři IP což je pro mne nepřípustné. Děkuji za pomoc.

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

Odpovědi

14.6.2009 13:22 Vantomas | skóre: 32 | Praha
Rozbalit Rozbalit vše Re: Přesný grep IP v BASH
Odpovědět | | Sbalit | Link | Blokovat | Admin
iptables -L -n | grep -w 1.2.3.4
Fuky avatar 14.6.2009 13:43 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: Přesný grep IP v BASH
Odpovědět | | Sbalit | Link | Blokovat | Admin

Máš nějaký důvod proč nenecháváš na jednom řádku pouze jednu IP? Mezery nahraď '\n' a máš po problému. Pokud Ti jde o něco jiného tak to ještě víc rozepiš.

Také je fajn přečíst si alespoň první řádek z manuálu:

grep - print lines matching a pattern

-- RÁMO: psí tábor , ETriatlon: Výuka plavání
14.6.2009 14:03 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Přesný grep IP v BASH
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nechápu jak z iptables -L taháte IP adresu, ale můžete za to iptables ještě dát grep
iptables -L -n | grep -o -E "([0-9]+\.)+[0-9]" 
ale to vypisuje tuším první ipadresu, čili src. Bude to chtít promyslet.
14.6.2009 15:34 zha
Rozbalit Rozbalit vše Re: Přesný grep IP v BASH
Odpovědět | | Sbalit | Link | Blokovat | Admin
Mělo by stačit grep -Fw $HLEDEJIP $DATA

Marně hledám, co je v tom dotazu k nepochopení, že pánové výše napsali takové hlouposti :-)
14.6.2009 17:22 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Přesný grep IP v BASH
On chtěl ale získat jen jednu IP, ne tři, tak nechápu proč nabízíte -F, to mu vygrepuje tuplem několik IPček. Asi je to opravdu k nepochopení, podle mne má potíž získat do proměnné $HLEDEJIP jen jednu ip adresu, pokud by ji tam měl, tak už ji z toho logu grepne snadno i bez toho -Fw.
15.6.2009 11:46 zha
Rozbalit Rozbalit vše Re: Přesný grep IP v BASH
Jak už tazatel níže vysvětlil, HLEDEJIP je v pořádku a problém je až v tom grepování z logu, kdy mu grep 192.168.100.1 vrací i řádky s 192.168.100.100 (logicky) a podobně. A -F proto, aby tečky byly tečky a ne libovolný znak.
14.6.2009 21:58 CasperP
Rozbalit Rozbalit vše Re: Přesný grep IP v BASH

No tak jsem se prospal do růžova a jak vidno protřepala se mi hlava. no jo no skoro měsíc bez pořádného spánku a jen jsem lítal k dítěti :-) Díky moc já celou dobu zapomínal na w no prostě fakt blbčo. čím delší skript tím větší banalita :-(

Pro ostatní dotaz to iptables jsem nerozepisoval jelikož je naprosto zbytečnej a dělá přesně to co po něm chci.Problém jsem měl jen a pouze s grep logu, kdy mi to vypisovalo i IP co jsem nechtěl

Celé to je o tom že mi to na serveru hlídá "neaktivní" usery a po předem definované době je mažu z iptables, takže pokud znovu chtěj na net musí se přihlásit.

Prostě něco jako hotspot nebo jak to popsat.......pokud by se někdo připojil na AP a chtěl by vlézt na net tak stejně pohoří na přihlašovacím dialogu a net už je chráněj ssl.

No a tenhle skriptík budu asi každou hodinu pouštět a pokud zadaná IP nemá provoz tak iptables delete jeho maškaráda a vše co tam má

Takže kujuuuuuuuuuu

14.6.2009 17:24 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Přesný grep IP v BASH
Odpovědět | | Sbalit | Link | Blokovat | Admin
Prosím doplňte za tečky, zdá se že to nikdo nechápe :(
HLEDEJIP=`iptables -L ...........`  #prostě něco

DATA=ipadresy.log

GREP=`grep $HLEJEJIP $DATA`
BTW proměnnou je možné si kdykoliv vypsat pomocí echo $PROMENNA, docela to usnadňuje debugování.
14.6.2009 17:27 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Přesný grep IP v BASH
Pokud snad v tom logu máte všechny tři IP adresy na jednom řádku, a chcete grepem zkontrolovat jestli ipadresa v $HLEDEJIP je obsažena v logu, lze poutíž přepínač -o (-only-matching), tím by vám nevypsal celý řádek (tři ip) ale jen tu ip která matchuje s tou v $HLEDEJIP. Ale pokud v logu máte každou ip na zvláštním řádku tak tuto radu ignorujte.

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.