Nowe posty

Autor Wątek: Odkrywanie adresu ip  (Przeczytany 879 razy)

Offline 920806

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 110
    • Zobacz profil
Odkrywanie adresu ip
« dnia: 2017-10-20, 18:01:22 »
Hej :) być może nie zrobię tego w bashu ,ale chce wiedzieć jak się za to zabrać. Chciał bym zrobić skrypt który po włączeniu pokazuje mój adres IP :) Macie jakiś pomysł?? próbowałem :

ifconfig |grep *.*.*.* 

ale to nie zadziałało w ogóle :(

za to:
 ifconfig |grep 10.0.0.* 


zadziałało ,ale minus tego jest taki ,że muszę znać adresacje :) a w skrypcie chodzi o to żeby jej nie znać :P

Jakiś pomysł ?;D
Steve Wozniak nie wiedział .. ~ ~ https://www.youtube.com/watch?v=FG1AQcGGSec ~~ / "Uparty jak nigdy" /P3@CE , L0\/E & rock'|\|'roII

Offline Paweł Mir

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 12
    • Zobacz profil
Odp: Odkrywanie adresu ip
« Odpowiedź #1 dnia: 2017-10-20, 22:53:14 »
linux tego nie potrafi :) zostaje ci windows

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2060
  • 1709
    • Zobacz profil
Odp: Odkrywanie adresu ip
« Odpowiedź #2 dnia: 2017-10-21, 00:58:00 »
Podchodzisz do sprawy zbyt prosto opisując rzeczy.
Trzeba się troche rozpisać, założenia, co wiemy, czego nie wiemy, jak co działa.
 Nawet spróbować się dowiedzieć, jak działa komenda ifconfig.
Bo chyba nie jesteś pewny czy " ifconfig " jest dobrym pomysłem.

Sieć internetowa ( publiczne IP ) --> ( publiczne IP )  modem lub router ( lokalne IP ) --> ( lokalne IP ) komputer

1. " ifconfig "
pokaże IP lokalne jeśli masz podpięte urządzenie jako router.

2.  " ifconfig "
pokaże IP zewnętrzne jeśli masz podpięte urządzenie jako modem.

3.  " ifconfig "
pokazuje IP , w zależności co jest podpięte (  wi-fi , kabel ethernetowy, wirtualne loopback )


I teraz co ty chcesz konkretnie uzyskać z tego ?

Zeby pobrać IP publiczne, zewnętrzne,  niezależnie od podłączego urządzenia,
możesz się spytać o IP
- albo swojego urządzenia ( jesli to router )
- albo jakiegoś serwisu iternetowego
- albo zeskanować trasę do jakiegoś znanego bardziej Ci serwisu, jeśli Ci pozwoli i wiesz czy po drodze masz jakieś urządzenie ( mtr traceroute )
( ale tu jeśli uzywasz bardzo szczelną zaporę to bez rozszczelnienia mtr i traceroute nie zadziala )

w internecie polacają serwisy internetowe z których za pomacą lynx lub lub curl lub wget możesz pobrać dane i potem wyodrębnić z tekstu IP.
https://stackoverflow.com/questions/25142055/linux-command-for-external-ip-address
https://stackoverflow.com/questions/14594151/methods-to-detect-public-ip-address-in-bash
https://stackpointer.io/unix/unix-linux-get-external-ip-command-line/378/

I tu masz dylematy
- A jesli serwis padnie ? To musisz szukać nowego.
- A jeśli wykorzystają twoje IP że jest aktywne, sprawdzą zaporę i spróbują się włamać do twojego komputera ?

Więc jeśli nie znajdziesz lepszej metody, to sam musisz wybrać jaka metoda będzie lepsza.

________________________________

Wracając do twojego przykładu jesli Ci to obojętne czy chcesz publiczne czy lokalne IP
Jak poznać z którego polączenia aktualnie korzystasz ? (   wi-fi ,  ethernet, loopback  )
A jesli nie masz nic podpiete to IP nie będzie.

Ja zakładam w ten sposób,
- nie może to być loopback bo to połączenie wewnetrzne
- jeśli będzie miało chyba   UP lub RUNNING to znaczy że połączenie istnieje ( możesz se przetestować )
więc to trzeba jakoś wyodrębnić.

# ifconfig | grep UP 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536

# ifconfig | grep UP | grep -v lo:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

# ifconfig | grep UP | grep -v lo: | awk '{printf $1}'
eth0
No i mamy informacje które urządzenie jest aktywne, a teraz IP z tego.

To teraz poszukamy IP
# ifconfig | grep -A1 eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168..... netmask 255.255.255.0  broadcast 192.168.0....

To co wskazuje na adres IP lokalne albo publiczne to słowo "inet " dla IPv4 i inet6 dla IPv6
# ifconfig | grep -A1 eth0 | grep inet
        inet 192.168.0....  netmask 255.255.255.0  broadcast 192.168.0....


# ifconfig | grep -A1 eth0 | grep inet | awk '{printf $2}'
192.168....
I masz IP

Czyli mogę zapisać to w zmiennych
URZADZ=$(ifconfig | grep UP | grep -v lo: | awk '{printf $1}')
NASZEIP=$( ifconfig | grep -A1 $URZADZ | grep inet | awk '{printf $2}' )

# I sobie wyświetlimy
echo "$NASZEIP"

To jest tylko przykład i się rozpisałem żebyś zrozumiał,
a jaką metodę wybierzesz, czy skrócisz, czy użyjesz innej metody, czy zainteresujesz się skąd te komendy wziąłem
( google i opcja "komenda --help " i "man komenda" twoim przyjacielem )
to już twoja sprawa.
« Ostatnia zmiana: 2017-10-21, 09:37:47 wysłana przez 1709 »
Pochwal się swoją kartą graficzną w tym wątku-->
http://forum.linux.pl/index.php/topic,19841.msg121122.html#msg121122

Offline 920806

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 110
    • Zobacz profil
Odp: Odkrywanie adresu ip
« Odpowiedź #3 dnia: 2017-10-21, 19:08:01 »
Hej , wybacz moją złą manierę , nie wiedzieć czemu troszkę zlekceważyłem bash-a :p . Chodzi tylko i wyłącznie o poznanie jaka jest adresacja w sieci lokalnej ,NA AKTUALNEJ MASZYNIE  :) - nothing more. Troszkę to głupie, jak się dziś zastanowiłem nad tym ,ale chciałem zautomatyzować sobie pewną czynność w 100% :D.

Chodzi o to żeby po jednym kliknięciu skrypt pobrał adres IP lokalnej maszyny i przekazał go do nmap-a ,żeby ten wiedział jaką adresacje ma skanować , wiem że to nic trudnego sprawdzić ,ale takie było założenie -to było pierwsze.

Drugie - wyrażenia regularne nie pomogą bo wychwyci też maskę podsieci :< ,więc chyba zwyczajnie pójdę na łatwiznę i  będę sprawdzał adresacje :D

[edit]

Dziękuje za profesjonalną odpowiedź ! :)
« Ostatnia zmiana: 2017-10-21, 19:24:15 wysłana przez 920806 »
Steve Wozniak nie wiedział .. ~ ~ https://www.youtube.com/watch?v=FG1AQcGGSec ~~ / "Uparty jak nigdy" /P3@CE , L0\/E & rock'|\|'roII

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2431
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
    • Linuxpedia.PL
Odp: Odkrywanie adresu ip
« Odpowiedź #4 dnia: 2017-10-21, 20:02:04 »
#!/bin/sh

# Szukamy interfejsu z domyślnym routingiem
DEF_IF=$(ip route show 0.0.0.0/0 | cut -d' ' -f5)

# Pobieramy jego adres
ADDR=$(ip -o -4 addr show dev $DEF_IF | awk '{print $4}' | cut -d'/' -f1)
echo $ADDR

albo (zakładając, że komputer ma jeden adres nielokalny - w tym nie ma wirtualnych interfejsów od XEN/KVM/Dockera/LXC itp)
hostname -I
Paweł Kraszewski
~Gentoo/FreeBSD/OpenBSD/Specjalizowane customy