Sprawdzanie ip, w plikach przez skrypt

Potrzebujesz pomocy z C, C++, perl, python, itp.
maxblink
Posty: 25
Rejestracja: 23 października 2008, 20:15

Sprawdzanie ip, w plikach przez skrypt

Post 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
kuzyn
Posty: 9
Rejestracja: 09 lipca 2008, 00:31

Post 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?
maxblink
Posty: 25
Rejestracja: 23 października 2008, 20:15

Post 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.
kuzyn
Posty: 9
Rejestracja: 09 lipca 2008, 00:31

Post 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
ODPOWIEDZ