Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2008-11-06 18:05:19

  rulezdc - Członek DUG

rulezdc
Członek DUG
Skąd: Tarnowskie Góry
Zarejestrowany: 2007-05-22

skrypty iptables....import danych z pliku...

witam
szukałem szukałem , mozę nie umiałem znaleźć, ale mam mały problem, mam napisany skrypt z regółami firewall-a, aby roździelać necik
wszystko działa pięknie ładnie tak jakbym chciał, jednak przy zmianie adresów mac, ip mam troszkę pracy przy zmianach
w pliku rc.firewall, komputery, które mają mieć dostęp do netu mam zmienną KOMPn - gdzie n to końcówka IP kompa
np:
KOMP2=192.168.0.2
i mam tak około 40 komuterów w sieci, gdzie numery IP są nie pokolei
mam tam ograniczanie ilości połączeń, markowanie, przypisanie mac, przekierowania portów itp
i mam to załatwoione poprzez odpowiednie reguły , jednak chciałbym sobei to jakoś uprościć, czuyli np:
abuy z pliku rc.firewall. ip pobrał IP kompa, nazwę zmiennej, mac, itp
i tutaj nie wiem jak podlinkować dane z innego pliku ( kupiłem sobie już książke do pisania skryptów, jednak tam nic o tym nie pisze)
chciałbym mieć w pliku taki zapis
KOMP2 =192.168.0.2;adres_mac;numer_markowania

a druga rzecz to chciałbym to potem załatwić w głównym skrypcie poprzez pętlę jednak, jako że nazwy zmiennych są ni po kolei to po puszczeniu takiej pętli np

i=2
while [$i -lt 255]
do
iptatables -t mangle -A UPLOAD -s KOMP$i -j MARK --set-mark ($i+1000)
i=$[$i+1]
done

wyskoczą mi błędy, że nie mam przyporządkowanych adresów IP w skrypcie,
będę wdzięczny jak mnie ktoś jak to rozwiązac , nie chce gotowca, mozę jakieś przykłady lub wskazówki
ppozdrawiam
T.M.

Offline

 

#2  2008-11-07 15:32:43

  bercik - Moderator Mamut

bercik
Moderator Mamut
Skąd: Warszawa
Zarejestrowany: 2006-09-23
Serwis

Re: skrypty iptables....import danych z pliku...

ja bym to zrobil poprzez czytanie tych linijek read z odpowiednio ustawiona zmienna definujaca separator ... i wpisaniu tego do tablic bashowych ...

przyklad (troche inaczej bo tak dzielone jest juz pole tablicy) - http://www.opcode.eu.org/sieci_komputerowe_uslugi/s … ng/routing.sh


"Wszyscy wiedzą, że czegoś zrobić nie można. Ale przypadkowo znajduje się jakiś nieuk, który tego nie wie. I on właśnie robi odkrycie." (A.Einstein)

Offline

 

#3  2008-12-11 19:21:57

  rulezdc - Członek DUG

rulezdc
Członek DUG
Skąd: Tarnowskie Góry
Zarejestrowany: 2007-05-22

Re: skrypty iptables....import danych z pliku...

witam
mógłby mi ktoś napisać jeden przykład jak przeczytać z pliku rc.firewall_ip linijke do głównego pliku firewall rc.firewall aby mi podpiął odpowieni mac dla regułki:
iptables -A FORWARD -i eth1 -o eth0 -s $KOMP6 -m mac --mac-source [numer_mac z pliku] -j ACCEPT
dane w pliku rc.firewall_ip są zapisywane w następujący sposób

KOMP6:adres_ip:adres_mac:numer_markowania_download:numer_markowania_upload

oglądałem skrypty bercika ale niestety chyba za cienki jestem aby to zrozumieć, będę wdziećżny za podpwoiedzi, bo mnie już cholera chyta za przeproszeniem,
tylko taka uwaga: perl nie wchodzi w rachubę
pozdrawiam

Offline

 

#4  2008-12-11 20:10:49

  Minio - Użyszkodnik

Minio
Użyszkodnik
Skąd: Poznań, Polska
Zarejestrowany: 2007-12-22
Serwis

Re: skrypty iptables....import danych z pliku...

Zobacz mój post w wątku o monitorowaniu sieci.

bercik: proszę, zintegruj edytor programistyczny ze słownikiem ortograficznym. „wykoŻystujemy”, „dwUch”. Wstyd.

Offline

 

#5  2008-12-26 12:25:17

  rulezdc - Członek DUG

rulezdc
Członek DUG
Skąd: Tarnowskie Góry
Zarejestrowany: 2007-05-22

Re: skrypty iptables....import danych z pliku...

witam
Wszystkiego Najlepszego Wszystkim z okazji Świąt Bożego Narodzenia, zdrowia przede wszystkim, reszta mało istotna
ale mam pytanko odnośnie read line i awk
bo gdy używam pętli:

while read line ; do
host=$(echo "$line" |awk -F , '{print $1}')
echo -e "$host" >>tmp
done < /home/tom/firewall_ip

a w pliku firewall_ip mam komentarze, to awk mi je przekopiowuje, jak zrobić aby nie pobierać do zmiennej host komentarzy
będę wdzięczny z ainformacje pozdrawiam
T.M.

Offline

 

#6  2008-12-26 12:56:32

  urug - Członek DUG

urug
Członek DUG
Skąd: Częstochowa
Zarejestrowany: 2008-04-22
Serwis

Re: skrypty iptables....import danych z pliku...

Cześć.

Wydaje mi się, że najprościej będzie lekko zmodyfikować tego awk'a: awk -F , '/^[^#]/{print $1}'.


Pozdrawiam, Tomek

Offline

 

#7  2008-12-26 13:24:51

  rulezdc - Członek DUG

rulezdc
Członek DUG
Skąd: Tarnowskie Góry
Zarejestrowany: 2007-05-22

Re: skrypty iptables....import danych z pliku...

witam
dziekuje za szybką odpowiedź, to jeszcze zapytam o jedną rzecz, teraz ładnie pomija linijki, jednak zostawia puste wiersze
moznaby to jakoś wyciąć ?

Offline

 

#8  2008-12-26 13:32:47

  urug - Członek DUG

urug
Członek DUG
Skąd: Częstochowa
Zarejestrowany: 2008-04-22
Serwis

Re: skrypty iptables....import danych z pliku...

To może teraz tak:
awk -F , '{ if ( $1 !~ /^[ \t]*$/ && $1 !~ /^#/ ) print $1}'

Jeśli to nie zadziała, to zamiast $1 w ifie daj $0 (w 2 miejscach).

Ostatnio edytowany przez urug (2008-12-26 13:34:11)


Pozdrawiam, Tomek

Offline

 

#9  2008-12-26 13:58:52

  rulezdc - Członek DUG

rulezdc
Członek DUG
Skąd: Tarnowskie Góry
Zarejestrowany: 2007-05-22

Re: skrypty iptables....import danych z pliku...

witam,
niestety z $1 i $0 jestt ten sam wynik
pozdrawiam

Offline

 

#10  2008-12-26 14:04:40

  urug - Członek DUG

urug
Członek DUG
Skąd: Częstochowa
Zarejestrowany: 2008-04-22
Serwis

Re: skrypty iptables....import danych z pliku...

Pokaż dane wejściowe.


Pozdrawiam, Tomek

Offline

 

#11  2008-12-26 14:13:38

  rulezdc - Członek DUG

rulezdc
Członek DUG
Skąd: Tarnowskie Góry
Zarejestrowany: 2007-05-22

Re: skrypty iptables....import danych z pliku...

to sa dane wejsciowe:
# plik z danymi do udostepniania internetu
# dane w pliku zapisane sa w nastepujacym schemacie
# numer_ip,mac_karty,mark_download,mark_upload,htb_download,htb_upload # opis komputera

# wykaz komputerow ktore maja dostep do sieci internet
#------------------------------------------------------------------
#
#
192.168.0.2,adres_mac,2,1002            # 2
192.168.0.3,adres_mac,3,1003            # 3
192.168.0.4,00:adres_mac,4,1004       # 4
192.168.0.5,adres_mac,5,1005            # 5
#
192.168.0.6,adres_mac,6,1006            #6
192.168.0.7,adres_mac,7,1007            #7
#
192.168.0.8,adres_mac,7,1007            #8

w takiej postaci są
pozdrawiam

Offline

 

#12  2008-12-26 14:17:55

  urug - Członek DUG

urug
Członek DUG
Skąd: Częstochowa
Zarejestrowany: 2008-04-22
Serwis

Re: skrypty iptables....import danych z pliku...

Kod:

urug@smigacz:sandpit$ awk -F , '{ if ( $1 !~ /^[ \t]*$/ && $1 !~ /^#/ ) print $1}' plik.txt 
192.168.0.2
192.168.0.3
192.168.0.4
192.168.0.5
192.168.0.6
192.168.0.7
192.168.0.8
urug@smigacz:sandpit$

Hmm, u mnie to działa.


Pozdrawiam, Tomek

Offline

 

#13  2008-12-26 14:27:14

  rulezdc - Członek DUG

rulezdc
Członek DUG
Skąd: Tarnowskie Góry
Zarejestrowany: 2007-05-22

Re: skrypty iptables....import danych z pliku...

a mi następujący kod:
#### podajemy sciezke dla programow
####
PATH=/sbin
AWK=/usr/bin/gawk

### testowy skrypt
while read line ; do
host=$(echo "$line" |$AWK -F , '{ if ( $1 !~ /^[ \t]*$/ && $1 !~ /^#/ ) print $1}')
echo -e "$host" >>tmp
done < /home/tom/firewall_ip

zostawia dziury w pliku tmp po komentarzach :(
pozdrawiam

Offline

 

#14  2008-12-26 14:32:11

  urug - Członek DUG

urug
Członek DUG
Skąd: Częstochowa
Zarejestrowany: 2008-04-22
Serwis

Re: skrypty iptables....import danych z pliku...

Zostają dziury, bo nie sprawdzasz zawartości host (I nawet gdy ta zmienna jest pusta, to do pliku tmp jest wrzucana nowa linia przez echo).

Rozwiązaniem może być zmienienie w awku printa na: print $1, "\n"
a echo na: echo -n ...

Swoją drogą, myślę że lepszym dla Ciebie rozwiązaniem będzie utworzenie po prostu tablicy tych adresów IP...

Kod:

TABLICA=( $(awk -F , '{ if ( $1 !~ /^[ \t]*$/ && $1 !~ /^#/ ) print $1}' plik.txt) );

for i in ${TABLICA[*]}; do 
    echo $i
done

Mam nadzieję, że okazało się to pomocne :)

Ostatnio edytowany przez urug (2008-12-26 14:41:43)


Pozdrawiam, Tomek

Offline

 

#15  2008-12-26 14:41:56

  rulezdc - Członek DUG

rulezdc
Członek DUG
Skąd: Tarnowskie Góry
Zarejestrowany: 2007-05-22

Re: skrypty iptables....import danych z pliku...

Dziękuje bardzo
teraz działa
chcę to wykorzystać w petlach iptables, i za chiny ludowe nie mogłem wykombinować jak to wsadzić w petle
ale dzięki wielkie

Offline

 

#16  2008-12-27 00:28:34

  rulezdc - Członek DUG

rulezdc
Członek DUG
Skąd: Tarnowskie Góry
Zarejestrowany: 2007-05-22

Re: skrypty iptables....import danych z pliku...

witam
tak sie jeszcze zapytam co do tablic
jak zrobić aby tablica była dwu wymiarowa i zawierała wpis [numer_ip mac]
i jak to potem wyciągnąć w petli aby można było podstawić w kodzie np:

iptables -A FORWARD -i eth1 -o eth0 -s $numer_ip -m mac --mac-source $mac -j ACCEPT

pozdrawiam
T.M.

Offline

 

#17  2008-12-27 00:40:03

  urug - Członek DUG

urug
Członek DUG
Skąd: Częstochowa
Zarejestrowany: 2008-04-22
Serwis

Re: skrypty iptables....import danych z pliku...

Możesz zrobić 2 tablice, w jednej trzymać adresy MAC, w drugiej adresy IP. Jeden indeks, to jedna para.


Pozdrawiam, Tomek

Offline

 

#18  2008-12-27 00:51:52

  rulezdc - Członek DUG

rulezdc
Członek DUG
Skąd: Tarnowskie Góry
Zarejestrowany: 2007-05-22

Re: skrypty iptables....import danych z pliku...

witam
to wiem ze moge dwie tablice
ale potem musze w wyzej wymienionym kodzie zastosowac odpowiednie wpisy co do zmiennych $numer_ip i $mac
i jak zrobie to w dwoch petlach, to niestety każdemu Ip przypisany jest każdy mac
chyba ze cos zle robie
pozdrawiam

Offline

 

#19  2008-12-27 00:58:31

  urug - Członek DUG

urug
Członek DUG
Skąd: Częstochowa
Zarejestrowany: 2008-04-22
Serwis

Re: skrypty iptables....import danych z pliku...

To wtedy w 1 pętli odwołujesz się do obu tablic (Muszą mieć tą samą wielkość, inaczej będzie klops)

Kod:

TAB1=(1 2 3 4 5)
TAB2=(5 4 3 2 1)

for (( i = 0; $i < ${#TAB1[*]}; i++ )); do
    echo "${TAB1[i]} ${TAB2[i]}"
done

Ostatnio edytowany przez urug (2008-12-27 00:59:36)


Pozdrawiam, Tomek

Offline

 

#20  2008-12-27 01:19:50

  rulezdc - Członek DUG

rulezdc
Członek DUG
Skąd: Tarnowskie Góry
Zarejestrowany: 2007-05-22

Re: skrypty iptables....import danych z pliku...

widzę, że dziś dzień dobroci dla zwierząt
bardzo dziękuje, sprawdzone działa jak powinno, jestem bardzo wdzięczny
może kiedyś odwdzięcze się czymś
i widzę, że jeszcze mnie baaaaaardzo dużo pracy czeka nad sobą, i nad tym jak pisać skrypty
pozdrawiam i jeszcze raz dziękuje

Offline

 

#21  2008-12-31 01:09:06

  rulezdc - Członek DUG

rulezdc
Członek DUG
Skąd: Tarnowskie Góry
Zarejestrowany: 2007-05-22

Re: skrypty iptables....import danych z pliku...

witam,
jeszcze takie teoretyczne pytanie, pewnie znowu awk się kłania:

jest sobie plik o nazwie host_ip a w nim dane według schematu:

Kod:

 192.168.10.10|00:00:00:00:0:00|5|121|1121|256kbit|10kbit|256kbit|3kbit|96kbit|a
 192.168.10.11|00:00:00:00:0:00|5|122|1122|256kbit|10kbit|256kbit|3kbit|96kbit|b
 192.168.10.12|00:00:00:00:0:00|5|123|1123|256kbit|10kbit|256kbit|3kbit|96kbit|a
 192.168.10.13|00:00:00:00:0:00|5|124|1124|256kbit|10kbit|256kbit|3kbit|96kbit|a

i z tego pliku chcę stworzyć tablice tylko z wierszami które na pozycji 11 mają literę a, czy moze mi ktoś powiedzieć jak to zrobić coś na styl

Kod:

TABLICA=( $(awk -F , '{ if ( $1 !~ /^[ \t]*$/ && $1 !~ /^#/ ) print $1}' host_ip) );

będę wdzięczny za pomoc
pozdrawiam
T.M.

Offline

 

#22  2008-12-31 08:19:30

  urug - Członek DUG

urug
Członek DUG
Skąd: Częstochowa
Zarejestrowany: 2008-04-22
Serwis

Re: skrypty iptables....import danych z pliku...

Kod:

TABLICA=( $(awk -F , '{ if ( index($1, "a") == 11) print $1 }' host_ip) )

Może być coś takiego?

Ostatnio edytowany przez urug (2008-12-31 08:20:18)


Pozdrawiam, Tomek

Offline

 

#23  2008-12-31 13:37:17

  rulezdc - Członek DUG

rulezdc
Członek DUG
Skąd: Tarnowskie Góry
Zarejestrowany: 2007-05-22

Re: skrypty iptables....import danych z pliku...

witam
prz probie zrobienia sobie malego testu

Kod:

TABLICA=( $(awk -F , '{ if ( index($1, "a") == 11) print $1 }' host_ip) )
for i in ${TABLICA[*]}; do 
    echo $i
done

niestety dostaje pusty wiersz
pozdrawiam

Offline

 

#24  2008-12-31 14:00:46

  urug - Członek DUG

urug
Członek DUG
Skąd: Częstochowa
Zarejestrowany: 2008-04-22
Serwis

Re: skrypty iptables....import danych z pliku...

Ale wedlug tego schematu który wkleiłeś, 11 znak to jest kropka :P
Poza tym, spróbuj zamiast $1 dać $0 ($0 oznacza cały wiersz wejściowy, nie podzielony separatorem)


Pozdrawiam, Tomek

Offline

 

#25  2008-12-31 15:07:01

  rulezdc - Członek DUG

rulezdc
Członek DUG
Skąd: Tarnowskie Góry
Zarejestrowany: 2007-05-22

Re: skrypty iptables....import danych z pliku...

witam
dziękuje za wskazówki, zasugerowałem się, że to jest jedenaste pole a nei jedenasty znak, teraz działa, tylko już chyba ostatnie pytanie jak to połączyć z kodem awk, które wycina wszystko co jest po haszu czyli:

Kod:

TABLICA=( $(awk -F , '{ if ( $1 !~ /^[ \t]*$/ && $1 !~ /^#/ ) print $1}' plik.txt) )
TABLICA=( $(awk -F , '{ if ( index($1, "a") == 11) print $1 }' plik.txt) )

jak z tego zrobić jeden ciąg

pozdrawiam, bardzo dziękuje, jak będziesz kiedy w Tarnowskich Górach, to stawiam dużego browara, lub co tam najchetniej pijesz
i zyczę szczęśliwego nowego roku
jeszcze raz pozdrawiam
T.M.

Ostatnio edytowany przez rulezdc (2008-12-31 15:07:45)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)