IP adresimi ifconfig veya hostname -i komutunu kullanarak bulabilirim.
Ancak Genel IP’mi nasıl bulabilirim?
(Statik bir IP'm var ama unix komutunu kullanarak öğrenmek istiyorum)
IP adresimi ifconfig veya hostname -i komutunu kullanarak bulabilirim.
Ancak Genel IP’mi nasıl bulabilirim?
(Statik bir IP'm var ama unix komutunu kullanarak öğrenmek istiyorum)
Yanıtlar:
curl ifconfig.me
curl ifconfig.me/ip
(sadece ip için)
curl ifconfig.me/all
(daha fazla bilgi için zaman alır)
Daha fazla komut için ziyaret edin: http://ifconfig.me/#cli_wrap
curl http://checkip.amazonaws.com/
Talep edebilirsiniz myip.opendns.com
. OpenDNS'den. dig @208.67.222.220 myip.opendns.com
dig @resolver1.opendns.com myip.opendns.com
. Veya Windows üzerinde: nslookup myip.opendns.com resolver1.opendns.com
.
dig @208.67.222.220 myip.opendns.com +short
bütün ipi kullanmak zorunda kalmadan doğrudan ipi almak.
dig @ns1.google.com -t txt o-o.myaddr.l.google.com +short
dig -4 @ns1-1.akamaitech.net -t a whoami.akamai.net +short
dig -4 @resolver1.opendns.com -t a myip.opendns.com +short
Yukarıdakilerin yalnızca şu anda IPv4 için çalıştığını unutmayın (bu çözümleyicilerin hiçbiri şu anda IPv6'ya sahip bile gözükmüyor, ancak ihmal ederseniz -4
ve açıkça belirtmiyorsanız -t a
, gelecekte kullanımda bozulma riskiyle karşı karşıya kalırsınız ( txt
aslında Google’ın dışında IPv6 bir gün, Google tarafından düzgün şekilde etkinleştirildiyse)).
Bunun myip.opendns.com
yalnızca çözülebilir resolver1.opendns.com
ve bununla çözülemeyeceğine dikkat edin auth1.opendns.com
- bu nedenle, bazı DNS kaçırma ve kendi etki alanı adlarının ortasında bir adam yapıyor gibi görünüyor! Bu nedenle, resolver1.opendns.com
yetkili olmadığı için rastgele bir çözücünün IP'sini bulmak için kullanamazsınız myip.opendns.com
.
Not o o-o.myaddr.l.google.com
en esnek ve geleceğe dönük yaklaşım gibi görünüyor; DNS çözücünüzün, istemci alt ağı için deneysel EDNS0 uzantısını destekleyip desteklemediğini test etmek için bile iyidir (ki çok az sayıda çözücünün desteği vardır):
% dig @8.8.8.8 -t txt o-o.myaddr.l.google.com +noall +answer +stats | tail -8
;; global options: printcmd
o-o.myaddr.l.google.com. 60 IN TXT "74.125.189.16"
o-o.myaddr.l.google.com. 60 IN TXT "edns0-client-subnet 88.198.54.0/24"
;; Query time: 13 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Dec 8 20:38:46 2013
;; MSG SIZE rcvd: 114
dig +short AAAA myip.opendns.com @2620:0:ccc::2
.
-4
veya -6
belirli bir IP sürümüne ihtiyacınız varsa.
İnternet erişiminiz varsa çok basit bir cevaplama:
curl icanhazip.com
IP’niz için üçüncü taraf kaynaklara güvenmek, özellikle de bu verilerle yaptığınız özel bir anlamı varsa, sorunlu olabilir.
Daha güvenilir bir yöntem, bilinen ve güvenilir bir DNS sunucusu seçmek (ideal olarak DNSSEC çalıştıran) ve DNS sunucunuzun bu tür girişleri içermesini sağlayarak kutunun ana bilgisayar adını sorgulamaktır;
dig @trustworthysource.com +short `hostname`
Bunun için basit ve hızlı bir web servis yazdım.
curl ident.me
IPv4'ünüzü isteyebilirsiniz:
curl v4.ident.me
Veya IPv6:
curl v6.ident.me
Ve API, http://api.ident.me/ adresinde belgelenmiştir.
Tek yönlü: http://www.whatismyip.com/
Eğer
o zaman tüm arayüzlerinizin IP adreslerinin listesini almak için çıktıyı sadece arabirimlerin IP adresleri ("inet addr:" bölümü) için ifconfig'den ayrıştırabilirsiniz. Özel aralıkta olmayan bir IP adresi (bkz. Http://en.wikipedia.org/wiki/IP_address#IPv4_private_addresses ), genel IP adresinizdir.
Aynı liste ayrıca aracılığıyla da edinilebilir.
ip addr show
ayrıştırmak daha kolay olabilir.
Doğrudan bir internet bağlantınız (NAT vb.) Yoksa, genel IP adresinizi harici yardım almadan bulamazsınız (bilgisayarınız bilmediğinden). O zaman diğer cevaplarda olduğu gibi yapman gerekecek.
NAT Traversal için tasarlanan STUN protokolünü kullanarak biraz farklı bir yaklaşım kullandım. Eğer Ubuntu kullanıyorsanız, sadece "stun" paketini yazarak kurabilirsiniz:
sudo apt-get install stun
Paket muhtemelen ihtiyaç duymayacağınız bir STUN sunucusu kurar, fakat aynı zamanda bu sorunu çözmek için kullandığım bir STUN test istemcisiyle birlikte gelir. Artık genel IP'nizi bir (çok basit değil) komutuyla alabilirsiniz:
stun -v stunserver.org 2>&1 1>/dev/null | grep MappedAddress | sed -e 's/.*MappedAddress = //' -e 's/:.*//' | uniq
Şimdi, yaptığı şey: stun, genel STUN sunucusuyla "stunserver.org" iletişim kurar ve genel IP adresinize geri bir cevap alır, komutun geri kalanı yalnızca IP'yi çıktıdan filtrelemek içindir.
Bir yol, sayfasından bir istek yapabilirsiniz
http://www.biranchi.com/ip.php
sisteminizin IP adresini döndürür
text/html
sözde API'nin döndürdüğü şey için sorun değil - kesinlikle XML veya JSON değil. text/plain
belki, ama tamamen kullanılabilir text/html
.
wget -q -O - http://wgetip.com/
Google şimdi genel IP adresinizi görüntüler: http://www.google.com/search?q=ip
User-Agent
sayfada hangi dizginin sağlandığına bağlı olarak gösterir. Firefox ile çalışır; ancak "Firefox" dizgisi devre dışı bırakılmış SeaMonkey devre dışı ("general.useragent.compatMode.firefox" aracılığıyla false olarak ayarlanır), birden bire olmaz. SeaMonkey de dahil olmak üzere eşit derecede uyumlu olan Gecko tabanlı pek çok masaüstü tarayıcısı bulunduğundan, Google’ın bu gibi şeyleri yalnızca herhangi bir Gecko yerine yalnızca Firefox için neden açıkça etkinleştirdiğine dair hiçbir fikriniz yok.
Tamam ... Bunun aslında YOL olduğunu biliyorum ve ilan etmeye bile değmez ama işte benim çalışma çözümüm.
#!/bin/sh
IP="$(ifconfig | egrep 'inet ' | sed -e 's/inet //' -e 's/addr://' -e 's/ Bcast.*//' -e 's/127.*//')"
echo $IP
Güzel ve basit.
hostname -I
(capital 'i') komutuyla yapabilirsiniz .
En basit yolu, önerildiği gibi http://ifconfig.me/ kullanmaktır .
Bu sayfada, hangi bilgileri almak istediğinizde hangi komutu kullanacağınızı bileceksiniz.
IP için:
curl ifconfig.meveya
curl ifconfig.me/ip
Genel Ana Bilgisayar Adı için:
curl ifconfig.me/host
XML dosyasındaki tüm bilgiler için:
curl ifconfig.me/all.xml
etc ... sadece http://ifconfig.me adresine bakın
Bunu çok yapıyorum ve birçok cihazdan bir sunucuda kendi iki hizmetimi yaptım:
Bir web sunucusu kökünde php dosyası:
user@host:~$ cat index.php`
<?php echo $_SERVER['REMOTE_ADDR']; echo "\n" ?>
Bir kabukta kullanım:
$ curl -4 mydomain.com
79.22.192.12
ayrıca ipv6 ile çalışma:
$ curl mydomain.com
2a01:e34:ee7d:180::3
Netcat ile:
$ echo "GET /" | nc myserver.com 80
2a01:e34:ee7d:180::3
Cisco yönlendiricisinde:
router#more http://myserver.com/index.php
79.22.192.12
özel telnet sunucusu ile hızlıca kesmek: xinetd spawning / usr / bin / env:
service telnet
{
server = /usr/bin/env
socket_type = stream
protocol = tcp
flags = IPv6
wait = no
port = 23
cps = 3 30
passenv = %a
}
ve sonra ona telnet:
$ nc -4 myserver.com 23
REMOTE_HOST=::ffff:79.22.192.12
$ nc myserver.com 23
REMOTE_HOST=2a01:e34:ee7d:180::3
bir yönlendirici ile aynı çalışır:
router#telnet myserver.com
79.22.192.12
Bu şekilde, iletişimde bir miktar nat veya proxy varsa ve hangi IP üzerinden göründüğünüzü bilmek istiyorsanız, dahili ağınızda çalışmasını sağlayabilirsiniz.
Herhangi bir üçüncü taraf hizmeti gerektirmez.
Harici kaynaklara güvenmekten kaçınmak için, umarım, yönlendiricime telnet yapmak ve ortak arabiriminin ip adresini almak için beklerim kullanılır. İşte bir bekleyiş betiği:
#!/usr/bin/expect
if { $argc < 3 } {
puts "usage: ./telnet2router.exp router-ip username password"
return -1
}
set ip [lrange $argv 0 0]
set username [lrange $argv 1 1]
set password [lrange $argv 2 2]
spawn telnet $ip
expect "login:" {
send "$username\r"
}
expect "Password:" {
send "$password\r"
}
expect "#" {
send "ifconfig ppp0 | grep inet\r"
send "exit\r"
}
expect eof
Sonra genel ip elde etmek için yukarıdaki betiği çalıştırmak:
./telnet2router.exp <router-ip> <username> <password> | grep "inet addr" | cut -d : -f 2 | cut -d " " -f 1
Elbette bu, yönlendiriciye yönetici erişimine sahip olduğum varsayımına ve bunun ifconfig komutunun bulunduğu linux tabanlı bir yönlendiriciye dayanıyor.
Diğer birçok sorunun yinelemesi (dolayısıyla benim -1 oyum).
Basit bir kabuk betiği çözümü burada bulunabilir:
http://bash.cyberciti.biz/misc-shell/read-local-ip-address/
Linux, FreeBSD, SunOS ve Apple Darwin (küçük bir değişiklikle) üzerinde çalışır.
İstediğiniz şey, yönlendiricinizde harici ip adresini bulmaksa, yönlendiriciden kendi wan adresini ister veya dışarıdan birinden sizin için almasını isteyin.
manuel bir yol için, gelen isteğin ipini döndürecek olan yukarıdaki sitelere göz atabilirsiniz.
Otomatik bir yol için deneyebilirsiniz:
wget -q -O - http://www.ipaddressworld.com | grep '[0-9]\{1,3\}\.[0-9]\{1,3\}'\.
http yanıtında ip adresini içeren satırı alırsınız, sonra sed, awk, vb. ile ayrıştırır.
harici IP'lerinizi kontrol etmek için dış kabuğu kullanarak dış kabuğu da kullanabilirsiniz.
#!/bin/bash
TCP_HOST="checkmyip.com"
TCP_PORT=80
exec 5<>/dev/tcp/"${TCP_HOST}"/"${TCP_PORT}"
echo -e "GET / HTTP/1.0\nHOST:${TCP_HOST}\n" >&5
while read -r line
do
case "$line" in
*"Your local IP address is"* )
line="${line#*Your local IP address is }"
line=${line%%</p>*}
echo "Your ip is: $line"
exec >&5-
exit
;;
esac
done <&5
çıktı
lynx - dökümü http://www.whatismyip.com/ | grep -o '[0-9]. * \. [0-9]. * \. [0-9]. * \. [0-9]. *' -m1
Bunu yapıyorum. Herhangi bir üçüncü taraf katılımı olmadan bana sadece IP veriyor.
IP adresi göster | grep eth0 | grep inet | tr -s "" | kesilmiş -f3 -d "" | -f1 -d "/" kesilmiş
İşte, işletmenin uzaklaşan veya biçimini değiştirebilecek "kamu hizmeti" siteleri yerine dinamik IP yönetimiyle ilgili çözüm arayan ana bilgisayarlara bağlı olan başka bir alternatif.
1) Sunucunuzu birçok ücretsiz dinamik dns hizmetinden birine (örneğin no-ip.com) kaydedin. Bu size xxx.no-ip.org gibi bir DNS girişi verecektir.
2) Servisin dinamik güncelleme aracını kurun (IP değişikliklerini servise bildirir).
IP adresini bir komut dosyasında almak için şunu yapın:
$external_ip = `dig +short xxx.no-ip.org`
Dinamik IP'nin değişip değişmediğini ve bazı yapılandırma girişlerinin değiştirilmesi gerekip gerekmediğini kontrol etmek için cron işinde kullanım için idealdir.
OS X'te, hem özel hem de genel IP elde etmek için iki basit çözüm var (LaunchBar kullanıyorsanız bonus kodu ile).
$ ipconfig getifaddr $1
# $1=en0 || en1 || en*
#!/bin/sh
title="$USER@$(HOSTNAME -s)"
text=$(ipconfig getifaddr en1)
open "x-launchbar:large-type?font-name=TerminalDosis-Light&string=$text&title=$title"
$ dig +time=1 +tries=1 +retry=1 +short myip.opendns.com @resolver1.opendns.com
# ||
$ curl $1
# $1=http://wtfismyip.com/text || http://ip-addr.es || http://icanhazip.com || http://wgetip.com || http://ident.me || http://ifconfig.me || https://shtuff.it/myip/short || http://curlmyip.com
#!/bin/sh
title="$USER@$(HOSTNAME -s)"
text=$(dig +time=1 +tries=1 +retry=1 +short myip.opendns.com @resolver1.opendns.com)
open "x-launchbar:large-type?font-name=TerminalDosis-Light&string=$text&title=$title"