Dziwi mnie, że to jeszcze nie było wyzwanie.
Wprowadź adres IP komputera, na którym pracujesz. Musisz podać zarówno lokalny, jak i zewnętrzny adres IP.
Lokalny adres IP, tzn. W domyślnym formacie 192.168.xx
Publiczny adres IP można zweryfikować za pomocą Google https://www.google.co.uk/search?source=hp&q=whats+my+ip
Dane wyjściowe mogą być w dowolnym formacie. IPv4 lub IPv6 lub dowolna ich kombinacja jest dozwolona, jednak muszą być jedynymi danymi wyjściowymi. Kod może być pełnym programem lub funkcją.
obowiązują zasady code-golf , więc najkrótsze wygrane kodu.
Standardowe luki są zabronione.
EDYCJA: Zgodnie z komentarzem @Peter Taylor, w przypadku, gdy istnieje wiele adresów dowolnego typu, możesz wybrać albo wydrukować pierwszy, albo tyle, ile możesz uzyskać dostęp. Tak długo, jak obecny jest co najmniej jeden lokalny i jeden publiczny.
0/1
rzecz dodaje niepotrzebnego puchu do wyzwania.Odpowiedzi:
Bash + curl + iproute2 ,
54 50 49 4833 bajtówDzięki @DomHastings za grę w golfa 1 bajtem!
Dzięki @Sisyphus za wymyślenie krótszego adresu URL!
Dzięki @zeppelin za grę w golfa z 9 bajtów!
źródło
1/0
część wysyła błąd do STDERR, ale jest to domyślnie ignorowane, jeśli jednak otrzymasz inne wyjścieip route
, może to być po prostu wersja, którą uruchomiłem na moim komputerze. Wstyd!1000
dla mnie ...ip route get 1
wynik: ptpb.pw/pixxRTNETLINK answers: Network is unreachable
awk 'NR<2&&$0=$7'
Bash
373127 bajtówTo jest inspirowana przez odpowiedzi przez Bruce Forte . Ta odpowiedź działa tylko z IPv4, co oznacza, że nie działa dla mnie. Przepisałem go do wersji, która (tylko) działa z IPv6:
Jest to testowane na Ubuntu 14.04.5 podłączonym przez PPPoE, a ponieważ IPv6 jest zaprojektowany do użycia bez NAT, będzie dwa razy wysyłał ten sam adres IP.
-6 bajtów dzięki Zeppelin , -2 bajtów dzięki Ferrybig , -2 bajtów dzięki Markasoftware .
źródło
'{print$11,$11}'
na'{print$9,$9}'
, aby prace polecenia, twoja komenda zwrócony 1024 2 razy, swoje prace polecenia na moim Ubuntu 16.04.2 maszynieip route
nie wyświetlaproto ra
części, możesz użyć tego jako funkcji, aby uzyskać dalszą odpowiedźproto static
proto ra
, że nie , choć ta różnica nie ma znaczenia dla tego kodu.awk '$0=$9" "$9'
zamiast{print$11,$11}
. Wiele systemów (w tym mój Arch one) używa 9. słowa, więc jest krótsze niż 11, a także użycie tej składni jest mniejsze niż print 9 USD, 9 USDMathematica, 17 bajtów
Mathematica ma wbudowane wszystkoJak opisano w dokumentacji , to wbudowane polecenie wyświetla listę wszystkich adresów IP (lokalnych i zewnętrznych) powiązanych z urządzeniem.
źródło
WolframAlpha["ip address", {{"IPAddress:InternetData", 1}, "ComputableData"}][[1,2]]
ale nie wiem, jak uzyskać bezpośredni dostęp do tego.AutoIt,
5653 bajtów@IPAddress1
to makro, które zwraca_GetIP()
zwraca-3 bajty dzięki @ mınxomaτ
źródło
C #,
196194188163 bajtówZaoszczędzono 2 bajty dzięki @Xynos.
Zaoszczędź 25 bajtów dzięki @Nick.
Pełna / sformatowana wersja:
źródło
i.AddressFamily
naint
zamiast zamiast2
naAddressFamily
, i możesz zastąpićDns.GetHostName()
pusty ciąg.namespace
sztuczka jest dość powszechna w języku C #. Jeśli uważasz, że nie powinno to być dozwolone, możesz zamieścić na nim meta, ale w tej chwili jest to uczciwa gra i fajna sztuczka w skracaniuusing
s.PowerShell v4 +,
4036 bajtów(Działa tylko na serwerze 2012 R2 lub nowszym albo Windows 8.1 lub nowszym. Nie działa na TIO).
Robi dokładnie to, co jest napisane na puszce. Pobiera adresy IP sieci lokalnej i wybiera tylko
IPA
część adresu (np. Odfiltrowuje maskę podsieci, bramę itp.).Drugi jest
Invoke-WebRequest
dohttp://eth0.me
którego po prostu dostajeC
ich ontent; tzn. tylko publiczny adres IP.Wersja bez golfa:
źródło
Get-
Unix Shell + oszałamiający , 40 bajtów
Wykorzystuje protokół STUN :
Nazwa serwera STUN pochodzi z listy publicznych serwerów STUN .
Format wyjściowy to:
Zauważ, że obie linie będą wcięte pojedynczą spacją, ale uważam, że nie łamie to reguł wyjściowych, jak napisano.
Przykładowe dane wyjściowe:
źródło
curl (bash one-liner): 27 bajtów
Wynik zostanie wydrukowany
stdout
i wygląda następująco:curl
powinna być co najmniej w wersji 7.29.0 (od 6 lutego 2013 r.).Odpowiedź jest oparta na /codegolf//a/139538/66016 .
źródło
Go, tylko MacOS, 10 bajtów
W systemie macOS można użyć tego przycisku kills , który może wydrukować bieżący prywatny aktywny adres IP i publiczny adres IP:
To nie jest wbudowane narzędzie, ale próbuje uprościć proces znajdowania odpowiednich adresów IP.
Dane wyjściowe można uzyskać za pomocą poleceń takich jak:
Publiczny adres IP:
źródło
PowerShell v3 + (alternatywna odpowiedź dla systemu Windows 7+)
źródło
-match
aby zaoszczędzić kilka bajtów.Bash + Awk + Curl, 43 bajty
używając tylko wbudowanych narzędzi dla komputerów Mac i Linux
źródło
Python 3,
124133 bajtyźródło
print a,b
? Co ciekawe, generuje to dwa adresy IP w moim systemie (Win7), ale żaden z nich nie jest moim rzeczywistym lokalnym adresem IP.b
to właściwie adres IP wirtualnego adaptera, a nie moje połączenie lokalne .Node.js (JavaScript)
224223194175173130 bajtówWersja bez golfa:
.get()
zamiast.request()
-.end();
usunięte).require
iconsole.log
zmienne jednoliterowe, przekazały adres URL bezpośrednio dorequire('http').get
, rejestrowały dane wyjściowe bezpośrednio zedata
zdarzenia).źródło
.get()
zamiast.request()
. Wtedy też nie potrzebujesz.end();
.(a)=>
=>a=>
), IIRC.require
wywołań, więc zostawię to na razie. W każdym razie dziękuję za sugestię.Plik wsadowy Windows , 116 bajtów
Pierwszy wiersz iteruje wyniki działania
ipconfig
i pobiera lokalny adres IPv4.Jeśli chodzi o część publicznego adresu IP, musiałem ukraść odrobinę cudownej odpowiedzi Powershell, ponieważ, o ile wiem, nie ma sposobu na uzyskanie publicznego adresu IP maszyny za pomocą skryptów wsadowych.
Zaczynamy od
@
znaku, aby wyłączyć echo znaku zachęty (C:\...\path>
), a następnie uruchomić polecenie PowershellInvoke-WebRequest
(z jego aliasemiwr
) i wyodrębnić jegocontent
część.I eksperymentowali z nie stosując
(...).content
, a zamiast tego tylko uruchamiając komendę i wydobywania aktualne informacje z pełnej wydajności, używając partii. Ale okazało się, że było to znacznie dłużej niż to rozwiązanie, więc go zatrzymałem.Testowane w systemie Windows 10.0.15063.
źródło
R,
142,140, 137 bajtówTestowane na Win10 i R (3.4.1).
Dzięki za @ Bruce-Forte za krótki adres URL.
Wersja bez golfa:
źródło
a <- nchar(x)
za=nchar(x)
Python 2.7.13 128 bajtów
źródło
Bash + Curl, 24 bajty
źródło
MS-SQL, 59 bajtów
Zwraca adres IP zwróconej do klienta instancji SQL wykonującej zapytanie.
źródło
VBA, 58 bajtów
Ups, nie obsługuje adresu lokalnego - naprawa w toku
Anonimowa funkcja bezpośredniego okna VBE, która nie przyjmuje danych wejściowych i wyjściowych adresu IP użytkownika przez okno przeglądarki Internet Explorer
źródło