ฉันรู้ว่าคุณสามารถทำได้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