มีคำสั่ง bash เพื่อค้นหาที่อยู่ IP สำหรับกล่อง Ubuntu หรือไม่ ฉันต้องการค้นหาที่อยู่ IP เพื่อที่ฉันจะได้สามารถเข้าสู่เครื่องได้ในภายหลัง
มีคำสั่ง bash เพื่อค้นหาที่อยู่ IP สำหรับกล่อง Ubuntu หรือไม่ ฉันต้องการค้นหาที่อยู่ IP เพื่อที่ฉันจะได้สามารถเข้าสู่เครื่องได้ในภายหลัง
คำตอบ:
/sbin/ifconfig -a
inet addr
?
หากคุณมีที่อยู่ภายในที่ใช้งานอยู่ให้ตรวจสอบ
curl http://myip.dnsomatic.com
อาจเป็นความคิดที่ดีสำหรับยูนิกซ์เชลล์
หรือเพียงแค่เขียน URL นั้นลงในเบราว์เซอร์ของคุณ
ถ้าคุณได้รับคำตอบที่แตกต่างจาก " ifconfig -a
" ผลให้อยู่ภายในของคุณ - ซึ่งอาจจะไม่ได้ทำจากภายนอกifconfig
แม้ว่าทุกคนจะดูดี แต่คุณสามารถมีไฟร์วอลล์ที่จะไม่อนุญาตการเชื่อมต่อssh ที่เข้ามา
ในเวลาใดที่คุณควรลองพอร์ตที่น่าสนใจจากเบราว์เซอร์บนเครื่องที่
http://www.canyouseeme.org/
ที่จะยืนยันการเชื่อมต่อผ่าน
curl http://myip.dnsomatic.com
curl ifconfig.me
/bin/hostname -i
hostname --all-ip-addresses
ในกรณีนี้ผมขอแนะนำให้ใช้ แสดงที่อยู่เครือข่ายทั้งหมดของโฮสต์ ตัวเลือกนี้จะระบุที่อยู่ที่กำหนดค่าทั้งหมดในอินเทอร์เฟซเครือข่ายทั้งหมด อินเทอร์เฟซแบบวนรอบและที่อยู่การเชื่อมโยงท้องถิ่น IPv6 ถูกละเว้น ตรงกันข้ามกับตัวเลือก -i ตัวเลือกนี้ไม่ได้ขึ้นอยู่กับการจำแนกชื่อ อย่าตั้งสมมติฐานใด ๆ เกี่ยวกับลำดับของเอาต์พุต
/bin/hostname -I
/bin/hostname -i
เพียงแค่ให้127.0.1.1
ซึ่งไม่มีประโยชน์
/sbin/ifconfig|grep inet|head -1|sed 's/\:/ /'|awk '{print $3}'
หากคุณต้องการที่อยู่ภายในของคุณผนวกอินเตอร์เฟซของคุณหลังจาก ifconfig เช่น
/sbin/ifconfig eth0|grep inet|head -1|sed 's/\:/ /'|awk '{print $3}'
หากคุณอยู่หลัง NAT และต้องการ IP สาธารณะให้ใช้สิ่งนี้:
wget -q -O - checkip.dyndns.org | sed -e 's / ที่อยู่ IP ปัจจุบัน: // '-e' s / < $ //'
นำมาจาก: http://www.go2linux.org/what-is-my-public-ip-address-with-linux
หากคุณต้องการทราบว่าที่อยู่ IP ของเราเตอร์ของคุณคืออะไรคุณสามารถเรียกใช้คำสั่งนี้ได้
dig + short myip.opendns.com @ 208.67.222.222 @ 208.67.220.220
หากคุณใช้ OpenDNS สำหรับเซิร์ฟเวอร์ dns ของคุณคุณสามารถย่อให้สั้นลงไปที่:
ขุด + short myip.opendns.com
คุณสามารถใช้คำสั่งนี้
http://myip.dnsomatic.com curl
หากคุณมีหลายอินเตอร์เฟสอาจเป็นประโยชน์ในการระบุว่าคุณต้องการไอพีใด หากคุณต้องการที่อยู่ IPV4 ของอินเทอร์เฟซ 'eth0':
ip addr show dev eth0 | grep "inet " | awk '{ print $2 }'
หากคุณต้องการที่อยู่ IPV6 ของอินเทอร์เฟซ 'eth0':
ip addr show dev eth0 | grep "inet6 " | awk '{ print $2 }'
หากคุณต้องการค้นหา IP ระหว่างสองอินเตอร์เฟสทั่วไปของแล็ปท็อป wlan0 และ eth0:
CURRENT_IP=''
for INTERFACE in wlan0 eth0; do
if [ -z $CURRENT_IP ]; then
CURRENT_IP=$(ip addr show dev $INTERFACE | grep "inet " | awk '{ print $2 }')
fi
done
แค่ม้วนหน้านี้:
$ curl wtfismyip.com/text
นี่คือหนึ่งบรรทัดที่ใช้งานได้บน Linux และ OS X ด้วยและจะส่งคืนที่อยู่แรกที่ไม่ใช่ภายใน:
ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'
ส่งเครดิตไปที่/programming//a/13322549/99834
LOCAL_IP=`/bin/hostname -I | sed 's/ //g'`
วิธีที่ง่ายที่สุดที่จะไปเกี่ยวกับมันน่าจะเป็น
ifconfig eth0
สมมติว่าเครื่องมีที่อยู่ IP เดียวในอินเตอร์เฟสเริ่มต้นแบบมีสาย - คุณอาจต้องใช้
ifconfig wlan0
ถ้าอยู่ใน WiFi
ip address show scope link
มันจะแสดงที่อยู่ IP ของการใช้ชีวิต - มีลิงค์ - อินเตอร์เฟส แต่มันไม่ใช่คำสั่ง bash Bash ไม่สามารถรู้เกี่ยวกับ IP และเครือข่ายได้เลย
สิ่งที่ฉันเข้าใจคือคุณต้องการเชื่อมต่อเครื่องอูบุนตูระยะไกลที่มี IP แบบไดนามิก ไปที่เว็บไซต์ dyndns.org และเปิดบัญชีฟรี จากนั้นในเครื่องระยะไกลคุณต้องติดตั้งเครื่องมือ IP แบบไดนามิก
sudo aptitude install dyndns-client
เพื่อให้คุณสามารถ ssh เครื่องระยะไกลผ่านทาง
ssh username@yourdynamicnamealias.dyndns.org
ดังนั้นหลังจากกำหนดค่าคุณจะไม่ต้องการที่อยู่ IP ของเครื่องระยะไกล
นี่คือสิ่งที่ฉันกำลังใช้:
LC_ALL=C /sbin/ifconfig | awk '
/inet addr/ {
gsub("addr:","");
if(($2!="127.0.0.1") && ($2!="0.0.0.0") && ($2!=""))
{ print $2 };
}'
หากคุณต้องการเพียง IP เดียวของอินเตอร์เฟสที่ให้มาคุณสามารถทำได้:
ifconfig eth0 | grep "inet " | awk '{gsub("addr:","",$2); print $2 }'
ฉันเคย golfed การสกัดที่อยู่ IP บน Linux:
http://www.catonmat.net/blog/golfing-the-extraction-of-ip-addresses-from-ifconfig/
หากคุณกำลังมองหาที่อยู่ IP สาธารณะของช่องคุณสามารถใช้สิ่งต่อไปนี้:
dig @ns1.google.com -t txt o-o.myaddr.l.google.com +short | tr -d \"
คุณสามารถใช้dig(1)
ตัวเลือกเช่น-4
หรือ-6
เพื่อค้นหาที่อยู่ IPv4 หรือ IPv6 โดยเฉพาะ Google จะให้คำตอบในรูปแบบบันทึกTXT
ซึ่งจะมีเครื่องหมายคำพูดล้อมรอบเมื่อแสดงโดยdig
; ถ้าคุณต้องการใช้ตัวแปรด้วยยูทิลิตี้เช่นtraceroute
คุณต้องใช้สิ่งที่ชอบtr (1)เพื่อลบเครื่องหมายคำพูด
ตัวเลือกอื่น ๆ รวมถึงwhoami.akamai.net
และmyip.opendns.com
, คำตอบA
และAAAA
บันทึกซึ่ง (แทนที่จะTXT
เป็นในตัวอย่างข้างต้นจาก Google) ดังนั้นจึงไม่จำเป็นต้องลบเครื่องหมายคำพูด:
dig -4 @ns1-1.akamaitech.net -t a whoami.akamai.net +short
dig -4 @resolver1.opendns.com -t any myip.opendns.com +short
dig -6 @resolver1.opendns.com -t any myip.opendns.com +short
นี่เป็นสคริปต์ตัวอย่างที่ใช้ตัวเลือกทั้งหมดด้านบนเพื่อตั้งค่าตัวแปร:
#!/bin/sh
IPANY="$(dig @ns1.google.com -t txt o-o.myaddr.l.google.com +short | tr -d \")"
GOOGv4="$(dig -4 @ns1.google.com -t txt o-o.myaddr.l.google.com +short | tr -d \")"
GOOGv6="$(dig -6 @ns1.google.com -t txt o-o.myaddr.l.google.com +short | tr -d \")"
AKAMv4="$(dig -4 @ns1-1.akamaitech.net -t a whoami.akamai.net +short)"
CSCOv4="$(dig -4 @resolver1.opendns.com -t a myip.opendns.com +short)"
CSCOv6="$(dig -6 @resolver1.opendns.com -t aaaa myip.opendns.com +short)"
printf '$GOOG:\t%s\t%s\t%s\n' "${IPANY}" "${GOOGv4}" "${GOOGv6}"
printf '$AKAM:\t%s\n$CSCO:\t%s\t%s\n' "${AKAMv4}" "${CSCOv4}" "${CSCOv6}"
หากคุณกำลังมองหาที่อยู่ IP ส่วนตัวหรือชุดของที่อยู่ IP ทั้งหมดที่กำหนดให้กับกล่องคุณสามารถใช้การรวมกันของifconfig
(บน BSD และ GNU / Linux), ip addr
(บน GNU / Linux), hostname
(ตัวเลือก-i
และ-I
บน GNU / Linux) และnetstat
ดูว่าเกิดอะไรขึ้น
vi /etc/network/interfaces
และตั้งค่าอินเทอร์เฟซเป็นstatic
(ดูhelp.ubuntu.com/8.10/serverguide/C/network-configuration.html )