Saya terkejut ini belum muncul dalam tantangan.
Keluarkan alamat IP mesin yang Anda jalankan. Anda diminta untuk menampilkan alamat IP lokal dan eksternal.
Alamat IP lokal, yaitu sepanjang format default 192.168.xx
Alamat IP publik dapat diverifikasi dengan menggunakan google https://www.google.co.id/search?source=hp&q=whats+my+ip
Output dapat dalam format apa pun. IPv4 atau IPv6 atau campuran apa pun dari masing-masing diperbolehkan, namun mereka harus menjadi satu-satunya output. Kode dapat berupa program atau fungsi lengkap.
aturan kode-golf berlaku sehingga kode terpendek menang.
Celah Standar dilarang.
EDIT: Sesuai dengan komentar @Peter Taylor, dalam kasus di mana beberapa jenis alamat hadir, Anda dapat memilih untuk menampilkan yang pertama, atau sebanyak yang dapat Anda akses. Selama setidaknya satu lokal dan satu publik hadir.
0/1
hal itu menambah tantangan yang tidak perlu.Jawaban:
Bash + curl + iproute2 ,
54 50 49 4833 byteTerima kasih @HomHastings untuk bermain golf 1 byte!
Terima kasih @Sisyphus untuk membuat URL yang lebih pendek!
Terima kasih @zeppelin untuk bermain golf 9 byte!
sumber
1/0
bagian ini menghasilkan kesalahan pada STDERR, tapi itu diabaikan secara default, jika Anda mendapatkan output yang berbeda untuk ituip route
, itu bisa saja versi yang saya jalankan di mesin saya. Malu!1000
untuk saya ...ip route get 1
output: ptpb.pw/pixxRTNETLINK answers: Network is unreachable
awk 'NR<2&&$0=$7'
Bash
373127 byteIni terinspirasi oleh jawaban oleh Bruce Forte . Jawaban itu hanya berfungsi dengan IPv4 yang artinya tidak berfungsi untuk saya. Saya telah menulis ulangnya menjadi versi yang (hanya) berfungsi dengan IPv6:
Ini diuji pada Ubuntu 14.04.5 yang terhubung melalui PPPoE dan karena IPv6 dirancang untuk digunakan tanpa NAT, ia akan menampilkan alamat IP yang sama dua kali.
-6 bytes berkat zeppelin , -2 bytes berkat Ferrybig , -2 bytes berkat Markasoftware .
sumber
'{print$11,$11}'
untuk'{print$9,$9}'
membuat pekerjaan perintah, perintah Anda kembali 1024 2 kali, perintah karya Anda pada mesin Ubuntu 16.04.2ip route
tidak menampilkanproto ra
bagian tersebut, Anda dapat menggunakan ini sebagai fitur untukproto static
tidakproto ra
, meskipun perbedaan itu tidak masalah dengan kode ini.awk '$0=$9" "$9'
saja{print$11,$11}
. Banyak sistem (termasuk Arch satu saya) menggunakan kata 9, jadi lebih pendek dari 11, dan juga menggunakan sintaks ini lebih kecil daripada mencetak $ 9, $ 9Mathematica, 17 byte
Mathematica memiliki dasar untuk segalanyaSebagaimana dijelaskan dalam dokumentasi , perintah bawaan ini mencantumkan semua alamat IP (baik lokal maupun eksternal) yang terkait dengan perangkat Anda.
sumber
WolframAlpha["ip address", {{"IPAddress:InternetData", 1}, "ComputableData"}][[1,2]]
tetapi saya tidak tahu bagaimana mendapatkannya secara langsung.Otomatis,
5653 byte@IPAddress1
adalah makro yang mengembalikan_GetIP()
kembali-3 byte terima kasih kepada @ mınxomaτ
sumber
C #,
196194188163 byteDisimpan 2 byte berkat @Xynos.
Disimpan 25 byte berkat @Nick.
Versi Lengkap / Diformat:
sumber
i.AddressFamily
untukint
bukannya casting2
untukAddressFamily
, dan Anda dapat menggantiDns.GetHostName()
dengan string kosong.namespace
triknya cukup umum untuk C #. Jika Anda berpikir itu seharusnya tidak diperbolehkan, Anda dapat memposting di meta tentang hal itu tetapi saat ini itu adalah permainan yang adil dan trik yang rapi dalam memperpendekusing
s.PowerShell v4 +,
4036 byte(Hanya berfungsi di Server 2012 R2 atau lebih tinggi, atau Windows 8.1 atau lebih baru. Tidak berfungsi pada TIO.)
Melakukan persis apa yang tertulis di kaleng. Mendapat alamat IP jaringan lokal dan memilih hanya bagian
IPA
penyisipan darinya (misalnya, menyaring subnet mask, gateway, dll.).Yang kedua adalah
Invoke-WebRequest
untukhttp://eth0.me
yang hanya mendapatC
menurunkan kandungan daripadanya; yaitu, hanya alamat IP publik.Versi tidak disatukan:
sumber
Get-
Unix Shell + stunclient , 40 byte
Menggunakan protokol STUN :
Nama server STUN berasal dari daftar server STUN Publik .
Format output adalah:
Perhatikan bahwa kedua baris akan di-indentasi dengan satu spasi, tapi saya percaya ini tidak melanggar aturan keluaran seperti yang tertulis.
Output sampel:
sumber
curl (bash one-liner): 27 byte
Hasilnya dicetak
stdout
dan terlihat seperti ini:curl
harus paling tidak dari versi 7.29.0 (mulai 6 Februari 2013).Jawabannya didasarkan pada /codegolf//a/139538/66016 .
sumber
Pergi, hanya MacOS, 10 byte
Di macOS killswitch ini dapat digunakan, ia dapat mencetak IP aktif pribadi dan IP publik:
Ini bukan alat bawaan tetapi mencoba menyederhanakan proses menemukan IP yang tepat.
Output bisa didapat dengan menggunakan perintah seperti:
IP Publik:
sumber
PowerShell v3 + (jawaban alternatif untuk windows 7+)
sumber
-match
untuk menyimpan beberapa byte.Bash + Awk + Curl, 43 byte
hanya menggunakan alat bawaan untuk Mac dan Linux
sumber
Python 3,
124133 bytesumber
print a,b
? Menariknya, ini menghasilkan dua IP pada sistem saya (Win7), tetapi tidak satu pun dari mereka adalah alamat IP lokal saya yang sebenarnya.b
sebenarnya adalah IP dari adaptor virtual dan bukan Local Area Connection saya .Node.js (JavaScript)
224223194175173130 byteVersi tidak disatukan:
.get()
sebagai ganti.request()
-.end();
dihapus).require
danconsole.log
dalam variabel huruf tunggal, diteruskan ke url langsungrequire('http').get
, keluaran log langsung daridata
acara).sumber
.get()
bukan.request()
. Maka Anda juga tidak perlu.end();
.(a)=>
=>a=>
), IIRC.require
panggilan, jadi saya akan meninggalkannya untuk saat ini. Terima kasih atas sarannya.File Batch Windows , 116 byte
Baris pertama beralih melalui hasil menjalankan
ipconfig
dan mendapatkan alamat IPv4 lokal Anda.Untuk bagian IP publik, saya harus mencuri sedikit dari jawaban Powershell yang luar biasa karena, sejauh yang saya tahu, tidak ada cara untuk mendapatkan IP publik mesin dengan menggunakan hanya batch scripting.
Kita mulai dengan
@
tanda, untuk menekan echo prompt (C:\...\path>
), kemudian jalankan perintah PowershellInvoke-WebRequest
(dengan aliasnya,iwr
) dan ekstrakcontent
bagian dari itu.Saya bereksperimen dengan tidak menggunakan
(...).content
dan, sebaliknya, hanya menjalankan perintah dan mengekstraksi informasi aktual dari output lengkap, menggunakan batch. Tapi itu terbukti jauh lebih lama daripada solusi ini, jadi saya menyimpannya.Diuji pada Windows 10.0.15063.
sumber
R,
142,140, 137 byteDiuji pada win10 dan R (3.4.1).
Terima kasih atas @ Bruce-Forte untuk URL pendek.
Versi tidak disatukan:
sumber
a <- nchar(x)
dengana=nchar(x)
Python 2.7.13 128 byte
sumber
Bash + Curl, 24 byte
sumber
MS-SQL, 59 byte
Mengembalikan alamat IP yang dihadapi klien dari instance SQL yang menjalankan kueri.
sumber
VBA, 58 Bytes
Ups, tidak menangani alamat lokal - perbaikan sedang berlangsung
Fungsi jendela langsung VBE anonim yang tidak mengambil input dan output alamat IP pengguna melalui jendela Internet Explorer
sumber