ฉันรู้ว่าคุณสามารถทำได้ifconfig | grep inet
แต่นั่นแสดงให้คุณเห็นที่อยู่ IPv4 หลายแห่ง ฉันจะได้รับเฉพาะสำหรับ SSHing และคณะได้อย่างไร
ฉันรู้ว่าคุณสามารถทำได้ifconfig | grep inet
แต่นั่นแสดงให้คุณเห็นที่อยู่ IPv4 หลายแห่ง ฉันจะได้รับเฉพาะสำหรับ SSHing และคณะได้อย่างไร
คำตอบ:
ใช้ipconfig getifaddr en1
สำหรับไร้สายหรือipconfig getifaddr en0
สำหรับอีเธอร์เน็ต
อัปเดต :
ipconfig getifaddr en0
เป็นค่าเริ่มต้นสำหรับอินเตอร์เฟส wifi
ifconfig
แสดงอินเทอร์เฟซและ IP ทั้งหมดของพวกเขา
curl -s http://checkip.dyndns.org/ | sed 's/[a-zA-Z<>/ :]//g'
ผลงานต่อไปนี้สำหรับฉันใน 10.8 และ 10.10 โยเซมิตี
ifconfig | grep "inet " | grep -Fv 127.0.0.1 | awk '{print $2}'
หากคุณพบว่าข้างต้นให้คำตอบมากกว่าหนึ่งคำให้บันทึกสิ่งต่อไปนี้ในสคริปต์แล้วเรียกใช้แทน
#!/usr/bin/env bash
dumpIpForInterface()
{
IT=$(ifconfig "$1")
if [[ "$IT" != *"status: active"* ]]; then
return
fi
if [[ "$IT" != *" broadcast "* ]]; then
return
fi
echo "$IT" | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}'
}
main()
{
# snagged from here: https://superuser.com/a/627581/38941
DEFAULT_ROUTE=$(route -n get 0.0.0.0 2>/dev/null | awk '/interface: / {print $2}')
if [ -n "$DEFAULT_ROUTE" ]; then
dumpIpForInterface "$DEFAULT_ROUTE"
else
for i in $(ifconfig -s | awk '{print $1}' | awk '{if(NR>1)print}')
do
if [[ $i != *"vboxnet"* ]]; then
dumpIpForInterface "$i"
fi
done
fi
}
main
เพียงแค่พิมพ์curl ifconfig.me
เทอร์มินัล
ipconfig getifaddr en0
สำหรับ IP ท้องถิ่น
ฉันได้ตั้งค่านี้ใน. aliases dotfile สำหรับการค้นหา ip บ่อยครั้ง:
alias ip="dig +short myip.opendns.com @resolver1.opendns.com"
alias localip="ipconfig getifaddr en0"
คุณสามารถทำสิ่งต่อไปนี้:
ประเภทหรือifconfig
ifconfig -a
คำสั่งนี้จะแสดงรายการอินเตอร์เฟสพร้อมกับที่อยู่ IP และ MAC ของพวกเขา (อันหลังนั้นใช้ได้เฉพาะ) คุณสามารถพิมพ์ifconfig en0
หรือifconfig en1
สำหรับการกำหนดค่าของอินเทอร์เฟซเฉพาะเท่านั้น (ตามที่มีคนพูดในคำตอบของพวกเขาโดยทั่วไป en0 จะเป็นอีเธอร์เน็ตแบบผ่านสายขณะที่ en1 เป็นอินเทอร์เฟซ WiFi)
อีกทางเลือกหนึ่งคือnetstat -i
จะแสดงรายการอินเทอร์เฟซทั้งหมดและจะแสดงที่อยู่ IP ที่คุณกำหนดให้แต่ละรายการ
โดยทั่วไปเมื่อคุณมี SSH daemon ทำงานอยู่ในกล่องมันจะฟังในอินเตอร์เฟสที่มีอยู่ทั้งหมดเช่น คุณสามารถใช้ที่อยู่ IP ใด ๆ ที่กำหนดค่าไว้ในเครื่องของคุณเพื่อเชื่อมต่อกับเครื่องนั้นผ่าน SSH (สิ่งนี้เห็นได้ชัดว่าเป็นไปตามกฎไฟร์วอลล์) หากคุณใช้ระบบปฏิบัติการที่เรียกว่าส่วนติดต่อหลักและที่อยู่ IP หลักคุณสามารถใช้scutil
คำสั่งดังนี้:
MacBook:~ scutil
> show State:/Network/Global/IPv4
<dictionary> {
PrimaryInterface : en0
PrimaryService : C0550F84-5C07-484F-8D62-C8B90DC977D8
Router : 10.103.4.1
}
> show State:/Network/Interface/en0/IPv4
<dictionary> {
Addresses : <array> {
0 : 10.103.4.234
}
BroadcastAddresses : <array> {
0 : 10.103.4.255
}
SubnetMasks : <array> {
0 : 255.255.255.0
}
}
โปรดทราบว่าข้างต้นแม้ว่าจะเป็นคำสั่งบรรทัดคำสั่งก็เป็นแบบโต้ตอบ (ดังนั้นคุณเรียกใช้scutil
แล้วป้อนคำสั่งของตัวเองลงไป) show
คำสั่งแรกจะบอกชื่อของอินเทอร์เฟซหลักสำหรับระบบปฏิบัติการ (เช่นนี้จะเป็นชื่อที่อยู่ด้านบนของรายการในหน้าต่างการตั้งค่าระบบ / การตั้งค่าเครือข่าย) รวมถึงที่อยู่ IP ของเราเตอร์เริ่มต้นของคุณ show
คำสั่งที่สองรับState:/Network/Interface/<ifname>/IPv4
อาร์กิวเมนต์ (ในกรณีนี้en0
) และให้ที่อยู่ IP ที่กำหนดให้คุณ คุณกำลังมองหาที่อยู่ในอาร์เรย์ที่อยู่อีกสองรายการคือที่อยู่ออกอากาศและ netmasks
หวังว่าจะช่วยได้ แต่ถ้ามีอะไรไม่ชัดเจนแจ้งให้เราทราบ
echo "show State:/Network/Interface/$(echo 'show State:/Network/Global/IPv4' | scutil | grep 'PrimaryInterface ' | sed 's/ PrimaryInterface : //')/IPv4" | scutil | pcregrep -Mo1 " Addresses : <array> {\n 0 : ([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})"
หากต้องการรับที่อยู่ IP ของคอมพิวเตอร์ของคุณที่เชื่อมต่อกับอินเทอร์เน็ตนี่คือใบเสร็จรับเงินที่ใช้งานได้:
if=`netstat -nr | awk '{ if ($1 ~/default/) { print $6} }'`
ifconfig ${if} | awk '{ if ($1 ~/inet/) { print $2} }'
มันควรจะทำงานได้แม้ในขณะที่คุณมีหลายอินเตอร์เฟสที่ใช้งานอยู่แม้ว่าคุณจะมีอินเทอร์เฟซที่คุณไม่รู้ว่าอันที่จริงแล้วเป็นเกตเวย์เริ่มต้น
192.168.0.*)
ไม่ใช่ที่อยู่ภายนอกที่เปิดเผยต่ออินเทอร์เน็ต
netstat -nr | grep default
?
สำหรับบันทึกคุณสามารถสร้างสคริปต์ทุบตีด้วยเนื้อหาต่อไปนี้ซึ่งให้ที่อยู่ IP ภายนอกของคุณ
#!/bin/bash
wget -qO - http://ipecho.net/plain; echo
wget
ไม่ใช่ส่วนหนึ่งของ macOS และจำเป็นต้องติดตั้งจากแหล่งที่ไม่ใช่ของ Apple
curl -s http://ipecho.net/plain; echo