Strona 1 z 1

Sprawdzanie ip, w plikach przez skrypt

: 04 listopada 2008, 22:19
autor: maxblink
Witam mam takie pytanie, czy jest opcja napisania skryptu który by po wpisaniu:

Kod: Zaznacz cały

./nazwa_skryptu 54.*.156.* 
przeszukiwał wszystkie pliki znajdujące się tutaj:

Kod: Zaznacz cały

 /pvpgn/var/users
W tym katalogu znajduje się "multum" plików o nazwach kont graczy, w których zawarta jest taka informacja:

Kod: Zaznacz cały

BNET\\acct\\lastlogin_ip"="83.17.254.234"
I sęk w tym żeby jako * był dowolny znak - wiadomo o co chodzi.
Tutaj jedna osoba napisała mnie, że może pomóc, tylko abym napisał to na forum. Tak przy okazji miło by było jakby wynik się tylko pokazywał, nie zapisywał do pliku.

Pozdrawiam

: 05 listopada 2008, 16:05
autor: kuzyn
Coś takiego wymyśliłem:

Kod: Zaznacz cały

#! /bin/bash
echo "Podaj IP ktorego szukasz"
read IP

lplikow=`ls /root/testowy | cat -n | tail -1 | awk '{ print $1}'`


for (( i=$lplikow; $i != 0; i--)) ; do
        plik=`ls /root/testowy | cat -n | grep $i | awk '{ print $2 }'`
        zawartosc=`tail -1 /root/testowy/$plik`
                if [[ $zawartosc =~ "$IP" ]]
                        then
                                wynik=`tail -1 /root/testowy/$plik`
                                echo $plik
                                echo $wynik
                else
                                echo "Brak dopasowania"
                fi
done
Zamiast root/testowy wpisz swoją ścieżkę czyli /pvpgn/var/users

Skrypt wyciągnie Ci IP jeśli np. wpiszesz 254.234 z Twojego przykładu. Jak będę miał czas to pomyślę jak całkiem go jeszcze usprawnić.

P.s. To mój trzeci skrypt w życiu więc pewnie da się to zrobić łatwiej i prościej.

Nie wymyśliłem jeszcze jak zrobić żeby podawać IP w formacie jaki podałeś ... ale może jak będe miał czas to wymyślę :P

[Dodano: 2008-11-05, 18:07]

I jeszcze mała modyfikacja:

Kod: Zaznacz cały

#! /bin/bash
echo "Podaj IP ktorego szukasz"
read IP

lplikow=`ls /root/testowy | cat -n | tail -1 | awk '{ print $1}'`


for (( i=$lplikow; $i != 0; i--)) ; do
        plik=`ls /root/testowy | cat -n | grep $i | awk '{ print $2 }'`
        zawartosc=`tail -1 /root/testowy/$plik`
                if [[ $zawartosc =~ "$IP" ]]
                        then
                                wynik=`tail -1 /root/testowy/$plik`
                                echo $plik
                                echo $wynik
                else
                                exit
                fi
done

No i już jest tak jak ty chcesz. IP podaj np. w takiej formie:

Kod: Zaznacz cały

"*.17.*.234"
lub

Kod: Zaznacz cały

 "83.17.*.*"
(razem z ")

Napisz czy o to Ci chodziło?

: 05 listopada 2008, 21:44
autor: maxblink

Kod: Zaznacz cały

ls: /pvpgn/var/users: Nie ma takiego pliku ani katalogu
ip: line 8: ((: i=: syntax error: operand expected (error token is "=")
Nie działa.

: 06 listopada 2008, 00:14
autor: kuzyn

Kod: Zaznacz cały

#! /bin/bash 
echo "Podaj IP ktorego szukasz" 
read IP 

lplikow=`ls /pvpgn/var/users | cat -n | tail -1 | awk '{ print $1}'` 


for (( i=$lplikow; $i != 0; i--)) ; do 
plik=`ls /pvpgn/var/users | cat -n | grep $i | awk '{ print $2 }'` 
zawartosc=`tail -1 /pvpgn/var/users/$plik` 
if [[ $zawartosc =~ "$IP" ]] 
then 
wynik=`tail -1 /pvpgn/var/users/$plik` 
echo $plik 
echo $wynik 
else 
exit 
fi 
done
¬le zamieniłeś ścieżki - masz tu dobrze zrobione. Skrypt na pewno działa.

[ Dodano: 2008-11-09, 21:25 ]
Zapomnij o tym co napisałem ...

Wejdz poprostu do katalogu w których masz te pliki do przeszukania i wykonaj np:

Kod: Zaznacz cały

grep "83.*.*.234" *
p.s. A ja się tyle upisałem :P