Freesco, NND, CDN, EOS
http://forum.freesco.pl/

Pisanie skryptów
http://forum.freesco.pl/viewtopic.php?f=22&t=11317
Strona 1 z 1

Autor:  kolos666 [ niedziela, 19 lutego 2006, 20:43 ]
Tytuł:  Pisanie skryptów

Witam

Potrzebuje napisać prosty skrypt

Mam plik np. /etc/klienci

nr:1 nazwisko:koza port:6677 id:343 ip:192.168.1.100
nr:2 nazwisko:dedek port:6678 id:322 ip:192.168.1.120

i plik wykonywalny np. /etc/blokada

i np uruchamiam plik blokada z parametrem -2

./blokada -2

to plik żeby wykonał operacje

iptables INPUT -p 6677 -a drop <- wiem że źle ale to nie ważne
echo koza

Nie potrzebuje tego skryptu do tego celu to tylko przykład !!!!

co musze napisać za 6677 żeby skrypt odczytał tą wartość z pliku /etc/klienci z 2 lini z sekcji port: i nie cztrał delej sekcji id i ip ????

Autor:  kolos666 [ niedziela, 19 lutego 2006, 21:20 ]
Tytuł: 

w dosie była bałwan jestem

find "port:" ale ona wyświetlała wszystko do końca linijki.

Autor:  puchatek007 [ niedziela, 19 lutego 2006, 22:47 ]
Tytuł: 

polecenie: cat /etc/klienci | grep "koza" | awk '{print $3 }' | sed 's/port://g'

Może cie nakieruje.

Autor:  kolos666 [ niedziela, 19 lutego 2006, 22:57 ]
Tytuł: 

zaraz będe to testował ale co to "awk '{print $3 }' | sed 's/port://g'" mniej więcej oznacza

Ps. wiem że to łatwe pytanko ale nie mam czasu sprawdzać
czym się różnią #/bin/sh od #/bin/bash <- to akurat potrzebuje do tunera philipsa 6010 do którego uclinux'a jakiegoś starego wgrałem

Autor:  puchatek007 [ niedziela, 19 lutego 2006, 23:04 ]
Tytuł: 

awk '{print $3 }' Ciąg znaków podzieli (znakiem dzielącym jest spacja) i zrobi tak jakby tablice gdzie właśnei 3 elementem będzie ciąg port:6677.

sed 's/port://g' To z kolej zamieni ciag "port:" na null czyli usunie ten ciąg.

To oczywiście takie moje tłuamczenie. WIęcej znajdziesz w manualach.

Autor:  Mis' [ poniedziałek, 20 lutego 2006, 00:38 ]
Tytuł: 

puchatek007 pisze:
awk '{print $3 }' Ciąg znaków podzieli (znakiem dzielącym jest spacja)


póki nie zastosowana jest opcja -F znakiem dzielącym jest dowolna ilość spacji lub tabulatorów.

Autor:  Mis' [ poniedziałek, 20 lutego 2006, 00:46 ]
Tytuł: 

puchatek007 pisze:
polecenie: cat /etc/klienci | grep "koza" | awk '{print $3 }' | sed 's/port://g'

Może cie nakieruje.


to oczywiście zadziała... ale - cztery procesy zamiast jednego. Jak już używasz awk to pozostałe nie są ci potrzebne. A szczególnie użycie cat, grep i awk razem mija się z celem.

awk '/koza/ {print$3}' /scieżka/plik | sed 's/port\://'

bez bicia przyznaję, że nie pamiętam jak podmienić ciągi znaków w awk (stąd pozostawiony sed), ale da się i całe wyrażenie robi się o wiele prostsze.
W ogóle używanie 'cat' w scriptach zazwyczaj jest błędem...

Autor:  kolos666 [ poniedziałek, 20 lutego 2006, 00:58 ]
Tytuł: 

Wielkie dzięki miś

Autor:  MAC!EK [ poniedziałek, 20 lutego 2006, 02:53 ]
Tytuł: 

: [/] [] ()
awk '/koza/ sub(/port:/, "") {print$3}'

Strona 1 z 1 Strefa czasowa UTC+2godz.
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/