Strona 1 z 2
ash wycinanie adresu IP ze strony php.
: 14 lut 2014, 15:24
autor: Skajper4
Potrzebuję wyciąć sam adres IP ze strony np.
tej do zmiennej. Wpadły mi na myśl dwie metody. Albo wycięcie grepem z pliku .php, lub użycie przeglądarki elinks i z niej wycięcie grepem adresu IP. Jednak mam problem w obsłudze grepa, ponieważ nie wiem jak wyciąć samo IP bez zbędnych śmieci typu znaczniki php, tekst lub nazwa hosta. Więc, jak to zrobić? Zmienną będzie np. $IP
Re: Bash wycinanie adresu IP ze strony php.
: 14 lut 2014, 15:38
autor: Pasman
A spróbowałeś już cokolwiek zrobić?
Re: Bash wycinanie adresu IP ze strony php.
: 14 lut 2014, 16:01
autor: Skajper4
Tak, próbowałem. Kończę pisać już dalszą część skryptu, więc została mi tylko ta zmienna. Niestety nie umiem obsłużyć grepa i w tym mam problem. Według instrukcji też mi nie wychodzi bo albo nie filtruje, albo nie dostaję na wyjściu nic, więc chciałbym zrobić tą część od początku.
PS. Nie potrzebuję gotowca, chcę się nauczyć ponieważ potrzebuję tego w celach prywatnych.
Re: Bash wycinanie adresu IP ze strony php.
: 14 lut 2014, 16:08
autor: namok
Re: Bash wycinanie adresu IP ze strony php.
: 14 lut 2014, 18:49
autor: bear7
Skajper4 pisze:Nie potrzebuję gotowca, chcę się nauczyć ponieważ potrzebuję tego w celach prywatnych.
Zasada zazwyczaj jest taka, że jak szukasz pomocy, to wrzucasz to, co do tej pory zrobiłeś i w rezultacie otrzymujesz odpowiedź, co i gdzie możesz poprawić, aby było lepiej.
W takiej formie wymiany zdań, jak obecna, z wątku zrobi się kolejny nikomu nie przydatny tasiemiec.
Chyba że oczekujesz odpowiedzi w stylu, zapoznaj się z manualem grepa...
Re: Bash wycinanie adresu IP ze strony php.
: 15 lut 2014, 08:00
autor: JSokol
Czy celem tego grep'owania ma być uzyskanie adresu IP osoby która skrypt wywołuje?
Jeśli tak, to odwoływanie się do "stron trzecich" po tego typu parametr jest trochę jak strzelanie z armaty do komara.
Re: Bash wycinanie adresu IP ze strony php.
: 07 mar 2014, 14:13
autor: Skajper4
Tak, ma to na celu pobranie zewnętrznego IP. Jako iż serwer dostaje IP 192.168.2.x to nie mogłem go pobrać z portu wan. Jeśli masz jakieś inne propozycje jak to wyciągnąć, proszę bardzo.
Ja jednak wolę strzelać z armaty w komara niż nie mieć nic. Obecnie zrobiłem to za pomocą przeglądarki elinks i działa świetnie, jednak wolałbym to wyciąć z surowego pliku html. Obciążenie podczas pracy skryptu jest znikome.
Kod: Zaznacz cały
logger -p user.notice "noip.com" "Aktualizowanie $domena"
ip=$(elinks www.mojeip.com.pl | grep -A2 Twoje | tail -n1 | sed -e 's/ //g')
wget -q -O - "http://$login:$haslo@dynupdate.no-ip.com/nic/update?hostname=$domena&$ip"
Re: Bash wycinanie adresu IP ze strony php.
: 07 mar 2014, 14:22
autor: ethanak
a jak w bashu dostaniesz się do kodu? o ile mnie pamięć nie myli bash nie ma wbudowanej obsługi http...
to co pokazałeś jest całkiem prawidłowe (ja bym co prawda użył lynxa a nie elinksa, ale w sumie 1H).
Re: Bash wycinanie adresu IP ze strony php.
: 08 mar 2014, 01:10
autor: Skajper4
ethanak pisze:a jak w bashu dostaniesz się do kodu? o ile mnie pamięć nie myli bash nie ma wbudowanej obsługi http...
Raczej nie musi mieć. Wystarczy, że umie wyświetlić zawartość html-a jako tekst. Z tego co widzę, "muszę się zapoznać z lekturą nt. grep, tail i sed" czego pełne pojęcie zajmie mi czas do wakacji

Dziękuję.
Re: Bash wycinanie adresu IP ze strony php.
: 08 mar 2014, 08:02
autor: ethanak
No tak, ale żeby tego HTML-a wyświetlić, musi go skądś mieć, prawda? A jeśli mam to ściągać np. wgetem to wolę użyć lynxa, który mi całą robotę z parsowaniem HTML-a przy okazji odwali.
Co do lektury polecałbym jeszcze awk - dużo rzeczy można w tym bardzo prosto zrobić.
Re: Bash wycinanie adresu IP ze strony php.
: 08 mar 2014, 08:03
autor: enedil
ethanak pisze:a jak w bashu dostaniesz się do kodu? o ile mnie pamięć nie myli bash nie ma wbudowanej obsługi http...
to co pokazałeś jest całkiem prawidłowe (ja bym co prawda użył lynxa a nie elinksa, ale w sumie 1H).
Do takich rzeczy najprzydatniejsza wydaje mi się w3m, która umie wypisać stronę na stdout (nie wiem jak z proponowanym Lynxem czy elinksem).
Re: Bash wycinanie adresu IP ze strony php.
: 08 mar 2014, 08:08
autor: ethanak
@enedil:
Owszem, Lynx potrafi i to bardzo dobrze potrafi - dlatego go polecam.
Re: Bash wycinanie adresu IP ze strony php.
: 10 mar 2014, 17:45
autor: Skajper4
Niestety, ale lynxa nie ma na OpenWrt a na tym ten skrypt jest uruchamiany, bo bez sensu byłoby np. na malince czy innych 3rd urządzeniach "korzystających" z sieci.
Re: Bash wycinanie adresu IP ze strony php.
: 10 mar 2014, 20:27
autor: jacekalex
Do takiej zabawy wymiata curl, właśnie wywala stronę na stdout.
Do zabawy z czesaniem danych z html/javascripta/ajaxa radziłbym zatrudnić perla, moduły www-mechanize i www-scripter-plugin-*.
Pozdro

Re: Bash wycinanie adresu IP ze strony php.
: 11 mar 2014, 03:32
autor: ethanak
Skajper4 pisze:Niestety, ale lynxa nie ma na OpenWrt a na tym ten skrypt jest uruchamiany,.
Miło że o tym poinformowałeś.
jacekalex pisze:Do zabawy z czesaniem danych z html/javascripta/ajaxa radziłbym zatrudnić perla, moduły www-mechanize i www-scripter-plugin-*.
Ty zawsze do komara z armaty strzelasz? A w płot już trafiłeś?
W tym konkretnym przypadku wystarczą podstawowe polecenia:
Kod: Zaznacz cały
curl -s http://www.mojeip.com.pl | grep -oE '([[:digit:]]+\.){3}[[:digit:]]+' | head -n 1
Nie wiem, czy curl jest w OWRT, ale jeśli nie curl to wget powinien być, a na dobrą sprawę i nc wystarczy
Kod: Zaznacz cały
echo -e 'GET / HTTP/1.1\nHost: www.mojeip.com.pl\n\n' | nc www.mojeip.com.pl 80 | grep -oE '([[:digit:]]+\.){3}[[:digit:]]+' | head -n 1
Re: Bash wycinanie adresu IP ze strony php.
: 11 mar 2014, 03:55
autor: jacekalex
Ty zawsze do komara z armaty strzelasz? A w płot już trafiłeś?
Oj tam, w komara z armaty zaraz.
Raz przyjdzie czesanie adresów IP, a innym razem czesanie kursów akcji ze stron GPW,
a jeszcze innym czesanie USG brzucha ze stron nk i fb.
Sposoby bashowe zawsze kiedyś się kończą, u mnie zakończyło je parsowanie wyniku javascripta.
Używanie modułów perla wcale nie jest dużo trudniejsze od Twojego rękodzieła artystycznego, za to pozwala np zdekodować stronę przy użyciu Webkita
http://search.cpan.org/~nine/WWW-WebKit ... /WebKit.pm
i setki innych opcji, do których Bash jest troszkę za cienki, np do ładowania unikalnych wyników do bazy SQL.
W Bashu też można, ale po co sobie życie komplikować, jeśli jest Perl i Python?
Prawdziwy język programowania zabezpiecza proces rośnięcia skrypta w coś większego, z bardziej specjalistycznymi funkcjami.
Taka jest właśnie smutna dola setek skryptów do czesania różnych danych z sieci, które zaczynają się na trzech linijkach, a potem się dodaje do nich jeszcze to, tamto i owamto, w miarę potrzeby.
Wystarczy wspomnieć chociażby smutny los żniwiarek do adresów email, które muszą się nauczyć javascripta do skutecznego działania.
Pozdro

Re: Bash wycinanie adresu IP ze strony php.
: 11 mar 2014, 10:10
autor: ethanak
nawet bym się z Tobą zgodził... tylko jakoś czarno widzę odpalenie rhino czy webkita na routerku z 32 MB RAM - a na takich maszynkach zwykł działać openwrt :)
BTW. sam używam webkita i bardzo go sobie chwalę - ale w przypadkach kiedy wystarczy prosty grep wolę zastosować grepa.
poza tym rękodzieło artystyczne też warto znać ;)
Re: Bash wycinanie adresu IP ze strony php.
: 11 mar 2014, 16:19
autor: jacekalex
Za to perl pewnie jest (z wbudowanym potężnym silnikiem wyrażeń regularnych) a www-mechanize - to raptem 140 kB (u mnie).
Przewaga nad curlem taka, że domyślnie wyczytuje stronkę do zmiennej, i można potem wielokrotnie czesać zawartość ściągniętej strony, póki jest przechowywana w zmiennej.
W Bashu takie zachowanie trzeba wyrzeźbić, i jest to bycza zabawa.
Pomijam takie bajki, jak sprawdzanie poprawności i rodzaju adresu IP, np czy IPv4 czy IPv6, i czy to np adres klasy prywatnej, czy multicast.
Do tego w Bashu "jest z 50 modułów", w Perlu tylko kilka działających.
Re: Bash wycinanie adresu IP ze strony php.
: 11 mar 2014, 19:47
autor: Skajper4
Raczej ram jest najmniejszym problemem, mój router posiada 64MB i wystarcza, gorzej z pamięcią flash bo ma pojemność chyba 4MB i 50% zajęte juz jest.
Re: Bash wycinanie adresu IP ze strony php.
: 12 mar 2014, 08:46
autor: ethanak
jacekalex pisze:Za to perl pewnie jest (z wbudowanym potężnym silnikiem wyrażeń regularnych) a www-mechanize - to raptem 140 kB (u mnie).
Bądź konsekwentny. Pisałeś poprzednio o parsowaniu JS, teraz piszesz o www-mechanize... a nie jest przypadkiem tak, że www-mechanize nie zna javascriptu?
Co do wyrażeń regularnych - coż, zawsze można dać grepowi parametr -P ;)
Przewaga nad curlem taka,
Przed chwilą sam polecałeś curla - teraz już odlecasz? Zdecyduj się.
Możesz mieć na ten temat inne zdanie ale ja uważam, iż najprostsze metody są najlepsze. Przypominam o Brzytwie Ockhama i KISS!