Freesco, NND, CDN, EOS http://forum.freesco.pl/ |
|
Bash - prośba o pomoc http://forum.freesco.pl/viewtopic.php?f=22&t=15221 |
Strona 1 z 2 |
Autor: | Albercik [ czwartek, 19 kwietnia 2007, 10:47 ] |
Tytuł: | Bash - prośba o pomoc |
w pliku "ipki" są wpisane IP jedne pod drugimi. Chciałbym z tego pliku wyłowić zadane IP i robię: ale wynik jest następujący: jak zrobić to tak, aby TYLKO zadane IP wyłowiło z pliku ? |
Autor: | Mis' [ czwartek, 19 kwietnia 2007, 10:54 ] |
Tytuł: | Re: Bash - prośba o pomoc |
Albercik pisze: w pliku "ipki" są wpisane IP jedne pod drugimi. Chciałbym z tego pliku wyłowić zadane IP i robię:
ale wynik jest następujący: jak zrobić to tak, aby TYLKO zadane IP wyłowiło z pliku ? Po pierwsze nie męcz kotów ![]() Po drugie, znaczek ^ oznacza początek, a znaczek $ koniec linii. Już wiesz? Brawo! dokładnie tak: grep '192.168.1.24$' nazwa_pliku Powyższe oczywiście nie zadziała jeśli po adresie IP będą spacje, tabulatory lub inne znaki niedrukowane. A za karę w manualu poszukaj opcji -w... |
Autor: | Albercik [ czwartek, 19 kwietnia 2007, 11:00 ] |
Tytuł: | |
Chwała Ci za to Dobry Człowieku ![]() |
Autor: | viater [ czwartek, 19 kwietnia 2007, 14:08 ] |
Tytuł: | Re: Bash - prośba o pomoc |
Mis' pisze: grep '192.168.1.24$' nazwa_pliku
Wystarczyłoby czyli spacja zamiast $. |
Autor: | Mis' [ czwartek, 19 kwietnia 2007, 15:16 ] |
Tytuł: | Re: Bash - prośba o pomoc |
viater pisze: Mis' pisze: grep '192.168.1.24$' nazwa_pliku Wystarczyłoby czyli spacja zamiast $. ilość znaków ta sama... a Albercik mówił, że w każdej linii jest tylko adres ip więc te spacje co ich chcesz szukać grepem trzeba by dopisywac... a w ogóle to chyba grep -w 192.168.1.24 powinien sobie poradzić. There is so many ways to skin a cat... ![]() |
Autor: | viater [ czwartek, 19 kwietnia 2007, 16:26 ] |
Tytuł: | Re: Bash - prośba o pomoc |
Mis' pisze: ilość znaków ta sama... a Albercik mówił, że w każdej linii jest tylko adres ip więc te spacje co ich chcesz szukać grepem trzeba by dopisywac...
Fakt ![]() Zagalopowałem się, bo niedawno wyciągałem grepem linie z zadanym IP z `cat /proc/net/ip_conntrack` i wtedy wystarczyło dać spację na końcu... |
Autor: | -MW- [ piątek, 20 kwietnia 2007, 00:45 ] |
Tytuł: | |
a tak nie mozna: cat ipki | grep 192.168.1.24[[:space:]] |
Autor: | Mis' [ piątek, 20 kwietnia 2007, 09:44 ] |
Tytuł: | |
-MW- pisze: a tak nie mozna:
cat ipki | grep 192.168.1.24[[:space:]] nieuważnie czytasz. Po pierwsze męczysz kota, co jest kompletnie zbędne, a po drugie (co już zauważyłem odpowiadając Viaterowi) w pliku o którym mówi Albercik nie ma żadnych znaków po adresie IP... Gdybyś powyższe zapisał tak: grep 192.168.1.24[[:space:]]* nazwa_pliku to pokrywało by to sytuację gdy po adresie IP jest zero lub więcej spacji/tabulatorów (ale nie innych znaków). I takiego wyrażenia Albercik by mógł użyć, gdyż obejmowałoby swoim zasięgiem sytuację którą ma w swoich plikach. Z tym, że to wyrażenie byłoby nadmiarowe, gdyż on w swoim pliku nie ma żadnych znaków po adresie IP. Dlatego w tym przypadku najsensowniejsze wydaje się użycie wyrażenia ze znakiem końca linii. |
Autor: | -MW- [ piątek, 20 kwietnia 2007, 10:13 ] |
Tytuł: | |
pod warunkiem ze przypadkiem nie postawi mu sie spacja ![]() w wowczas we wspomnianym wyzej przypadku sypnie beledami. czyli najbezpieczniej wydaje mi sie uzyc wlasnie takiej skladni. |
Autor: | tasiorek [ piątek, 20 kwietnia 2007, 10:20 ] |
Tytuł: | |
Najbezpieczniej i najlogiczniej jest skorzystac z opcji jakie oferuje grep, a nie kombinowac jak kon pod gorke: grep -w 192.168.1.24 |
Autor: | Albercik [ niedziela, 22 kwietnia 2007, 16:17 ] |
Tytuł: | |
Obydwa sposoby sprawują się bez zarzutów : "grep -w 192.168.1.24 nazwa_pliku" oraz "grep '192.168.1.24$' nazwa_pliku" Dzięki za pomoc. Troszkę więcej wygibasów trzeba wykonać jeśli zamiast IP podstawia się zmienną w pierwszym przypadku.... |
Autor: | Albercik [ niedziela, 29 kwietnia 2007, 00:49 ] |
Tytuł: | |
Jeszcze jedno pytanko : jak zrobić pętlę , aby czytała np. wyrazy czy liczby z pliku linia po linii ? |
Autor: | tasiorek [ niedziela, 29 kwietnia 2007, 00:57 ] |
Tytuł: | |
ten skrypt bedzie wypisywal kolejne linie z pliku dane i po kazdej dodawal "nowa linia" |
Autor: | tassman [ poniedziałek, 30 kwietnia 2007, 20:52 ] |
Tytuł: | |
podepne sie: jak mozna polaczyc dwa warunki w petli if...then? np. if [ "$1" = "start" ]; then i if [ "$2" = "IP" ]; then |
Autor: | viater [ poniedziałek, 30 kwietnia 2007, 21:44 ] |
Tytuł: | |
tassman pisze: podepne sie:
jak mozna polaczyc dwa warunki w petli if...then? np. if [ "$1" = "start" ]; then i if [ "$2" = "IP" ]; then if [ "$1" = "start" ] && [ "$2" = "IP" ]; then ... fi |
Autor: | -MW- [ poniedziałek, 30 kwietnia 2007, 21:45 ] |
Tytuł: | |
Cytuj: #!/bin/bash while read wyraz1 wyraz2 wyraz3 wyraz4 ; do echo $line echo "nowa linia" done < dane Cytuj: if [ "$1" = "start" -a "$2" = "IP" ]; then
if [ "$1" = "start" -o "$2" = "IP" ]; then -a and -o or |
Autor: | Mis' [ poniedziałek, 30 kwietnia 2007, 21:47 ] |
Tytuł: | |
tassman pisze: podepne sie:
jak mozna polaczyc dwa warunki w petli if...then? np. if [ "$1" = "start" ]; then i if [ "$2" = "IP" ]; then Na przykład tak: if [ $1 = start -a $2 = IP ]; then #polecenia jeśli powyższe jest prawdą fi albo |
Autor: | tassman [ wtorek, 1 maja 2007, 08:40 ] |
Tytuł: | |
w takowym skrypcie, na moje potrzeby parametr help wylowuje prawidlowo, natomiast parametr: start i koncowka IP niestety nie. #!/bin/bash # Wyświetlenie tekstu pomocy ############################################################################# if [ "$1" = "help" ]; then echo "przypominacz V0.1 2007-04-30 (C) tassman 2006 dla NND" echo "Włączanie i wyłączanie przypominania" echo "--------------------------------------------" echo "Uzycie:" echo "przypomnienie parametr1 parametr2" echo "parametr1 -> start stop check help" echo "parametr2 -> ADRES_IP" echo " " else echo " " echo "Podales zly parametr" fi #Start przypomnienia ############################################################################# if [ "$1" = start -a "$2" = "" ]; then echo "Przypomnienia wlaczone dla 192.168.1$2" iptables -A PREROUTING -t nat -s 192.168.1.$2 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.1:82 -m limit --limit 60/h --limit-burst fi |
Autor: | viater [ wtorek, 1 maja 2007, 10:29 ] |
Tytuł: | |
Wstaw w warunkach "==" zamiast "=" i będzie dobrze. "=" jest operatorem podstawienia, zaś operatorem porównania (którego powinieneś użyć) jest właśnie "==". Poczytaj o operatorach. |
Autor: | tassman [ środa, 9 maja 2007, 09:08 ] |
Tytuł: | |
#!/bin/bash # Wyświetlenie tekstu pomocy ############################################################################# if [ "$1" = "help" ]; then echo "przypominacz V0.1 2007-04-30 (C) tassman 2006 dla NND" echo "Włączanie i wyłączanie przypominania" echo "--------------------------------------------" echo "Uzycie:" echo "przypomnienie parametr1 parametr2 parametr 3" echo "parametr1 -> start stop check help" echo "parametr2 -> ADRES_IP" echo "parametr3 -> czestotliwosc" echo " " else echo " " echo "Podales zly parametr" fi #Start przypomnienia ############################################################################# if [ "$1" = "start" ] && [ "$2" == "" ]; then echo "Przypomnienia wlaczone dla 192.168.1.$2" iptables -A PREROUTING -t nat -s 192.168.1.$2 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.1:82 -m limit --limit 60/h --limit-burst 1 fi dalej to samo, probwalem jeszcze kilku innych sztyczek ale cos nie tak... popatrzcie prosze |
Strona 1 z 2 | Strefa czasowa UTC+2godz. |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |