Szkriptek: Python, Perl, Bash, ...

nfdump feldolgozás bash

Sziasztok

nfdump kemenetét kellene feldolgoznom, de van egy kis problémám.

amikor alapban meghívom az nfdump-ot, egy hasonlót kapok:

Date first seen          Duration Proto      Src IP Addr    Flows  Packets    Bytes      pps      bps   bpp
2009-08-08 02:04:31.850 86344.330 any     192.168.10.200    89660    2.6 M    1.4 G       30   138456   558
2009-08-08 16:14:27.760 35348.820 any     192.168.10.168    31456    1.3 M  973.5 M       38   231015   756
2009-08-08 10:57:07.450 54389.170 any      192.168.30.70    34428    1.2 M  428.6 M       23    66109   344
2009-08-08 01:34:29.670 83142.640 any     192.168.10.198    23956   505840  161.7 M        6    16312   335
2009-08-08 12:21:09.520 41404.440 any     192.168.10.104    17409   319523  103.4 M        7    20950   339
2009-08-08 14:55:35.340 40080.620 any     192.168.10.120    22682   760900  103.0 M       18    21566   142
2009-08-08 15:23:31.660 12217.190 any      192.168.10.36     7164    63165   51.9 M        5    35655   862
2009-08-08 02:02:19.340 86476.160 any     192.168.10.188    19596   431104   44.8 M        4     4346   108
2009-08-08 09:17:53.140 60341.220 any     192.168.10.110    21631   217804   34.5 M        3     4801   166
2009-08-08 09:46:44.920 19478.780 any     192.168.10.156    16578   469766   29.8 M       24    12848    66

ezzel az a gondom, hogy a bytes mező alatti értékek nem egyformák, van Giga, Mega, Byte, és így nem tudom jól
kiszedni az értékeket.

erre találtam azt, hogy az nfdump meghívható -o pipe kapcsolóval, ahol ilyen lesz a kimeneti formátum:

2|1249689871|850|1249776216|180|0|0|0|0|3232238280|89660|2676165|1494370110|30|138456|558
2|1249740867|760|1249776216|580|0|0|0|0|3232238248|31456|1349041|1020764218|38|231015|756
2|1249721827|450|1249776216|620|0|0|0|0|3232243270|34428|1304953|449456418|23|66109|344
2|1249688069|670|1249771212|310|0|0|0|0|3232238278|23956|505840|169528672|6|16312|335
2|1249726869|520|1249768273|960|0|0|0|0|3232238184|17409|319523|108430303|7|20950|339
2|1249736135|340|1249776215|960|0|0|0|0|3232238200|22682|760900|108050758|18|21566|142
2|1249737811|660|1249750028|850|0|0|0|0|3232238116|7164|63165|54451330|5|35655|862
2|1249689739|340|1249776215|500|0|0|0|0|3232238268|19596|431104|46979061|4|4346|108
2|1249715873|140|1249776214|360|0|0|0|0|3232238190|21631|217804|36213895|3|4801|166
2|1249717604|920|1249737083|700|0|0|0|0|3232238236|16578|469766|31285035|24|12848|66

itt a byte -ok szépen szerepelnek, csak az ip címekkel van gondom (csak a cím és a byte kell az egészből)
a címeket "IP addresses are printed as 4 consecutive 32bit numbers" formában írja ki.
A fenti példában a 192.168.10.200 -at 3232238280-nak jeleníti meg.
kérdésem, hogyan lehet visszafejteni, hogy a 323... ból megkapjam a kívánt ip címet.
a 32 bites számot hogyan lehet bash -ban 4 db nyolcbitesre felosztani

köszi

Szkript átírása Perl-ről Awk-ra

Sziasztok!

Van egy perl scriptem, ami így néz ki:


#!/usr/bin/perl -w
use strict;
while(<>){
    my @f=split(/\|/);
    $f[4]=~/\[(.*)\]/;
    my $sp=$1;
    print "$sp\t$f[3]\t$f[1]\n";
}

Ez azt csinálja, hogy a bemenetről érkező sorokat szétvágja a | mezőelválasztóknál. Az 5. mezőből kiszedi a stringet, ami [ ] zárójelek között van, és berakja az sp változóba. aztán a végén kiírja tabbal szeparálva az sp változót, illetve a bemenetből a 4. és a 2. mezőt érintetlenül.

A szkript szépen le is fut, azt is csinálja, amit szeretnék, a nagy kérdés az az, hogy hogyan lehet ezt megcsinálni awk egysorosból? (Nem házi feladat, csak okosodni szeretnék.)

Köszi előre is,

Csaba

Python+SSL

Udv!

Segitseg kellene... Python + SSL

Probalok egy SSL-es servert kesziteni [nem HTTL, tehat urllib es tarsai nemkellenek es twisted sem]
Lenyeg amiben segitseg kellene... Tudok irni nekem egy peldat, vagy egy jo doksit neten?

A forrasomat be se masolom, mert annyira......... Gaz es szutyok.... (szepen fogalmazva)...

Nem voltam tul bobeszedu, pedig az szoktam lenni... De nem nagyon tudom mit kene irnom meg. Remelem igy is ertheto miben szeretnek segitseget kerni...

/*
Odaig biztosan jo, hogy:


import socket, ssl

*/

http://docs.python.org/3.1/library/ssl.html
Ez valamenniyre segitett, de valamiert a self._sslobj.do_handshake()-nel mindig elszall..

Elore is koszi =)

munin plugin

Sziasztok!

Sajnos nem vagyok jártas a munin plugin írásában és mivel nem leltem ehhez kapcsolódó használható anyagot, gondoltam hozzátok fordulok segítségül. Remélem tudtok segíteni.

A feladat: Egy rendszer mûködése során eltérõ eseményet naplózunk több naplófájlba. Ezekbõl a log-fájlból kellene kibogarászni azt, hogy egy adott esemény hányszor következett be és ezeket meg kellene jeleníteni egy erre alkalmas grafikonon. Mivel a naplózások során az események ugye hozzáfûzõdnek a naplófájlhoz, ezért a naplófájlból minden 5 percben vett érték csak egy egyre magasodó grafikont adna, ami nem volna jó. Sokkal inkább ezek változását kellene megjeleníteni, tehát hogy a mintavételek között mennyi volt a különbség, vagyis a jelenlegi érték és az elõzõleg vett érték különbségére vagyunk kíváncsiak. Kis nehézség hogy ugye bizonyos napszakban log rotate kövtkezik be, amellyel sajnos számolni kell.

Íme a jelenlegi megoldásom sajnos nem mûködik rendesen.

#!/bin/sh

if [ "$1" = "autoconf" ]; then

echo yes

exit 0

fi

if [ "$1" = "config" ]; then

echo 'graph_title NumOfEvents'

echo 'graph_category Log'

echo 'graph_args --base 1000 -l 0'

echo 'graph_vlabel log'

echo 'graph_scale no'

echo 'graph_info Esemenyek szama'

echo 'resol.label resol'

echo 'resol.draw line2'

echo 'resol.type COUNTER'

echo 'nsess.label received';

echo 'nsess.type COUNTER';

echo 'nsess.graph no';

echo 'nsess.cdef down,10,*';

# echo 'nsess.label nsess'

# echo 'nsess.type COUNTER'

# echo 'nsess.draw line2'

exit 0

fi

Location1=/var/log/filenev1.log;

Location2=/var/log/filenev2.log;

Result1="0";

Result2="0";

if test -f $Location1 ; then #ha letezik filenev1.log

Result1=`cat $Location1 | grep 'Keresett_szoveg_1' | wc -l` ;

fi

if test -f $Location2 ; then #ha letezik filenev2.log

Result2=`cat $Location2 | grep 'Keresett_szoveg_2' | wc -l`;

fi

echo -n "resol.value ";

echo $Result1;

echo -n "nsess.value ";

echo $Result2;

[Megoldva] Ékezetes fájlnevek konvertálása

Sziasztok!

Szeretnék egy menetben ékezetes és szóközös fájlneveket átkonvertálni ékezet nélküli és szóköz nélküli fájlnevekre.
A WEB-en találtam és és átalakítottam a következő script-et:


#!/bin/bash
for i in *.*; do mv "$i" "`echo $i | sed -e 's/á/a/g;s/é/e/g;s/í/i/g;s/ó/o/g;s/ö/o/g;s/ő/o/g;s/ú/u/g;s/ü/u/g;s/ű/u/g;s/Á/A/g;s/É/E/g;s/Í/I/g;s/Ó/O/g;s/Ö/O/g;s/Ő/O/g;s/Ú/U/g;s/Ü/U/g;s/Ű/U/g;s/ /_/g'`"; done

két fájllal próbáltam:
árvíztűrő tükörfúrógép.txt
ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP.TXT

A kisbetűsre működik a nagybetűsre nem.
Az eredmény:
arvizturo_tukorfurogep.txt
ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP.TXT

A cél amit el szeretnék érni:
arvizturo_tukorfurogep.txt
ARVIZTURO_TUKORFUROGEP.TXT

Mit csináltam rosszul? (nem értek a bash scriptekhez, ezt a script-et is csak összeollóztam több helyről)

Köszi
Levus

bash: Argument list too long [megoldva]

Ezt kapom az egyik scriptbol hivott scriptben: "Argument list too long" mikozben a script hivatkozott soraban egyaltalan nem tunik hosszunak az az argumentum lista.
Tipikusan ilyen akkor szokott lenni, ha az ember "*"-gal dolgozik file-okon es tul sok file van. Nalam, most egyaltalan nem ez a helyzet, tenyleg argumentumok vannak ott sorolva 3 soron keresztul (valtozok es jokerek nelkul), de ez egyreszt szerintem messze van a bash korlataitol, masreszt meg ugyanezt a scriptet kozvetlenul shell-bol inditva, jol lefut, nyoma sincs a fenti hiba uzenetnek.

Valahogy igy van most:

a.sh -> b.sh -> c.sh -> "Argument list too long"
b.sh -> c.sh -> "Argument list too long"
c.sh -> "OK"

Kettevagtam a c.sh scriptet es ez is megoldotta a problemat:

a.sh -> b.sh -> { c1.sh; c2.sh } -> "OK"

Akar hasznalhatnam is igy, de jo lenne erteni, hogy miert mukodik/nem mukodik igy.
-------------------------------------------------------------------------------------
Megoldas:
A problema vegul valoban a kornyezeti valtozok korul volt (kossz a tippet Zahy). A bena sajat scriptjeink miatt volt egy ilyen valtozo ertekatas a .profile-ban:


alma=valami:$alma:$alma:$alma:$alma:$alma

ami persze helyesen ilyen lett volna:


alma=valami:$alma

de a (megintcsak bena) install scriptek tobbszor lefuttatva (reinstall) valamiert ezt eredmenyezik.

Tovabbi benasag :) hogy a .profile -t tobb script is include-olja (ami felesleges, hiszen azok a valtozok mar ugyis elnek) es a fenti alma=... ertekadas tobbszor is meghivodik. Vagyis elso alkalommal 5-szorosere, masodikra 5*5-szorosere no a valtozo... A sok egymasbol hivott script es a .profile tobbszori include-olasa vegul egy 300kB-os(!) valtozot eredmenyezett :) es ezutan jott "Argument list too long"...

fix_mezoszelessegbol_csv

PostgreSQL adatbasisba szeretnek exportalni 1 fix mezoszelessegu fajlt es ha jol ertem sql script segitsegevel csak csv-t lehet az adatbasisba beolvasni.
Ezert ilyenbol:
000000 99999 NYGGBUKTA GREENLAND- STA GL GL +73483 +021567 +00030 (az oszlopok kozott neha 1, neha tobb space van)
szeretnek ilyet:
000000,99999,NYGGBUKTA GREENLAND- STA,GL,GL,+73483,+021567,+00030
es ez mar sikerult:
000000,99999,NYGGBUKTA,GREENLAND-,STA,GL,GL,+73483,+021567,+00030
igy:
sed 's/ [ ]*/,/g'

A gond az,h a fajl harmadik oszlopaban vannak tobb szavas nevek. Itt valahogy ki kene hagyni a space2comma atalakitast.

awk,perl,python??

Ugy is jo lenne, ha az input fajlt modositas nelkul tudnam beolvasni. De hogy tudom az sql scriptben meghatarozni,h hol vannak az oszlophatarok?

A segitseget elore is koszonom.

Drupal + print base_path().path_to_theme() problema

Sziasztok!

Egy honlapot probalok osszeallitani egy fizetos Drupal temabol. (Ezert teljes forraskodot nem szeretnek adni.)

Egy blokk a temaban (Administer/Site Building/Blocks) az alabbi kodot tartalmazza:

http://pastebin.com/f1e4d2aa9

Valamiert az oldalon a kepek nem jelennek meg, hanem helyettuk a kovetkezo lathato:


A képet a Képfeltöltés.hu tárolja. http://www.kepfeltoltes.hu

Probaltam a ket fuggveny helyett a teljes eleresi utat megadni. Akkor se mukodott. A kepek hozzaferhetoek lennenek az Apache szerver szamara. Mi lehet a gond. A $directory valtozot a tema hol allithatja esetleg?

A kepek jelenleg a ./themes/temanev/images mappaban vannak. Valamiert a ./sites/all alatt nem jelent meg a tema menuben.

A fejlesztoi kornyezetben a .htaccess-kent az alabbi file-t hasznalom annak erdekeben, hogy a "Clear URL" mukodjon:

http://cvs.drupal.org/viewvc.py/drupal/drupal/.htaccess?view=markup

Ezen kivul a tema nevet megvaltoztattam, tehat ./themes/reginev helyett a ./themes/ujnev alatt talalhato. Ezen kivul a temanev.info file-ban is atirtam a tema adatait. Viszont sajnos az eredeti temat bemasolva se jelennek meg a kepek.

Sajnos a sotetben tapogatozom, nem tudom, hogy mi lehet a gond. Valakinek van valami otlete? A segitseget es otleteket elore is koszonom!

(Apache/2.0.59 (OS X), PHP Version 5.2.6, Drupal 6.13. A tema 6.12-hoz keszult.)

Panasonic telefon központ soros portkimenetelének olvasása

szervusztok!

adot nálunk egy panasonic telefonközpont. eddig rá volt kötve egy tarifa számláló gép és egy taxameter nevű csoda programmal. ezt szeretném lecserélni egy linuxra. a cél az lenne, hogy a telefonközpont üzeneteit kéne olvasni és egy sql adatbázisba pumpálni. azt szeretném kérdezni, hogy valaki foglalkozot-e esetleg valami hasonlóval?

arra gondoltam, hogy egy script figyelné folyamatosan a portot és ha jön infó akkor megfelelő paranccsal egy mysql adatbzisba nyomná.

csak sajna nem tudom a soros port olvasásának a menetét.