Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 43 odgovora
  • 11.767 pregleda

Najnovija ↓

Pišemo zajedno: ES oneliner #0001 23.09.2004. u 00:51 · pre 269 meseci #1
Program koji ćemo ovaj put pisati treba da iz liste koju daje netstat -na prikaže sledeće podatke:

broj tcp ipv4 konekcija, grupisano po stanjima (ESTABLISHED, LISTEN, TIME_WAIT, SYN_SENT, FIN_WAIT_[12], LAST_ACK i ostala koja sam možda zaboravio)

Cilj: napisati što više varijacija, bilo po efikasnosti koda i brzini izvršavanja, kriptičnosti, što manjoj dužini, ili već koji cilj sebi zacrtate.

Osnovni uslov je da se program izvršava na većini linux mašina u nekom od well known shell alata ili skripting jezika (bash, awk, sed, grep, perl, ... dozvoljene sve kombinacije) i da staje u jedan red (zato se i zove oneliner). "Red" za sada nije strogo definisan, ali mislim da je oko 100 bajtova za sada ok, možemo posle i da skraćujemo.

Kasnije ćemo zadatak proširiti nekim grupisanjem po portovima, videćemo već iz smera koji rešenja budu zauzela i naravno vaših komentara.
Re: Pišemo zajedno: ES oneliner #0001 23.09.2004. u 02:24 · pre 269 meseci #2
'Ajde da otvorim ovo:
netstat -na | grep ^tcp | awk -F\ '{ print $6 }' | uniq -c
Izvinjavam se sto nije "kripticno". :)
Potpis
JaFreelancer.com
Re: Pišemo zajedno: ES oneliner #0001 23.09.2004. u 09:27 · pre 269 meseci #3
Ajde da ubacimo malo kriptinosti :)

Code:
netstat -nat|sed -e 1,2d|tr -dc A-Z\\n|uniq -c


Sada bar mora da se manuje komanda tr (sto bi neki rekli, moja omiljena :))

P.S. videh da fali jedno _

Code:
netstat -nat|sed -e 1,2d|tr -dc A-Z_\\n|uniq -c


je malo bolje :).

[Ovu poruku je menjao chupcko dana 23.09.2004. u 13:16 GMT]
Potpis
CHUPCKO
Re: Pišemo zajedno: ES oneliner #0001 23.09.2004. u 10:37 · pre 269 meseci #5
I naravno jeste kripticno, jeste ludo, ali nije bas kratko resenje:

Code:
cat /proc/net/tcp|sed -e '1d;s/^.\{34\}\(..\).*/\1/;s/01/ESTABLISHED/;s/02/SYN_SENT/;s/03/SYN_RECV/;s/04/FIN_WAIT1/;s/05/FIN_WAIT2/;s/06/TIME_WAIT/;s/07/CLOSE/;s/08/CLOSE_WAIT/;s/09/LAST_ACK/;s/0A/LISTEN/;s/0B/CLOSING/'|uniq -c
Potpis
CHUPCKO
Re: Pišemo zajedno: ES oneliner #0001 23.09.2004. u 11:35 · pre 269 meseci #6
Evo jednom perl, mada verovatno može i bolje, samo još malo da razmislim.. ;)

netstat -nat|perl -e '/[A-Z]{2,}/&&print"$&n"while<>'|uniq -c
Re: Pišemo zajedno: ES oneliner #0001 23.09.2004. u 12:14 · pre 269 meseci #7
Fali jedan backslash pre n :)

A i da bi lepo radilo mora i _ da se ukljuci :)

Code:
netstat -nat|perl -e '/[A-Z_]{2,}/&&print"$&\n"while<>'|uniq -c


Eto dokaza da pratim temu :))))) hihihiih
Potpis
CHUPCKO
Re: Pišemo zajedno: ES oneliner #0001 23.09.2004. u 13:02 · pre 269 meseci #9
Zapravo nije, sad vidim da mi mailing lista pojede taj jedan backslash. To ćemo morati da sredimo, u međuvremenu evo grubog rešenja, još može da se doteruje:

netstat -nat|perl -e '/[A-Z_]{2,}/&&$*{$&}++while<>;for$&(keys%{*}){print$*{$&}," $&\n"}'
Re: Pišemo zajedno: ES oneliner #0001 23.09.2004. u 13:45 · pre 269 meseci #10
Varijacija ali još uvek bez konkretnog napretka:

netstat -nat|perl -e '/[A-Z_]{2,}/&&$*{$&}++while<>;print"$^ $*\n"while($*,$^)=each%{*}'
Re: Pišemo zajedno: ES oneliner #0001 23.09.2004. u 14:31 · pre 269 meseci #12
Ovo prethodno ipak nije hvatalo odvojeno FIN_WAIT_1 i FIN_WAIT_2 ali zato ovo radi:

netstat -nat|perl -e '/[A-Z_]{2,}[12]?/&&$*{$&}++while<>;@^=keys%{*};print"$*{$*=pop@^} $*\n"while$#{^}>=0'
Re: Pišemo zajedno: ES oneliner #0001 23.09.2004. u 15:30 · pre 269 meseci #14
Nakon sto sam naucio nesto o netstat-u:
netstat -nat | awk -F\ '{ print $6 }' | uniq -c :)
Inace, imao sam ideju sa hash listom u perlu, ali, ne znam kako to da izvedem u jednom redu. :)
Mozda ti, Gojko, uskocis sa nekim resenjem.
Potpis
JaFreelancer.com
Re: Pišemo zajedno: ES oneliner #0001 23.09.2004. u 15:54 · pre 269 meseci #15
Nemoj misliti da cepidlacim :), ali evo ovo ovako radi

Code:
[chp] 1 /home/chupcko => netstat -nat | awk -F\  '{ print $6 }' | uniq -c
      1 established)
      1 Foreign
      2 LISTEN
      1 ESTABLISHED
Potpis
CHUPCKO
Re: Pišemo zajedno: ES oneliner #0001 23.09.2004. u 16:05 · pre 269 meseci #16
Znam. I ja sam provalio tek posle onih prvih dva reda. :)
Potpis
JaFreelancer.com
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme