polecenie ip w terminalu Mac OS X.

64

Korzystam z polecenia ip linkw systemie Linux. Teraz chcę go w systemie Mac OS X, ale terminal Mac OS X tego nie ma ip. Czego powinienem użyć zamiast tego?

aryjski
źródło
Myślę, że jeśli społeczność Linuksa chce, aby „ip” zastąpił „ifconfig”, byłoby pomocne, aby „ip” był dostępny zarówno w systemie Unix, jak i Linux.
Scott Skiles

Odpowiedzi:

89

Możesz użyć brewdo instalacji iproute2mac. W rzeczywistości jest to opakowanie Pythona, które zapewnia bardzo podobny interfejs API, który prawdopodobnie okaże się bardzo znajomy dla ipnarzędzia zawartego iproute2w systemie Linux.

Instalacja

$ brew install iproute2mac
==> Installing iproute2mac from brona/homebrew-iproute2mac
==> Downloading https://github.com/brona/iproute2mac/archive/v1.0.3.zip
######################################################################## 100.0%
🍺  /usr/local/Cellar/iproute2mac/1.0.3: 4 files,  24K, built in 2 seconds

Stosowanie

Po zainstalowaniu otrzymasz narzędzie wiersza polecenia, które do wszystkich zamierzonych celów naśladuje ippolecenie w systemie Linux.

$ ip
Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
       ip -V
where  OBJECT := { link | addr | route | neigh }
       OPTIONS := { -4 | -6 }

iproute2mac
Homepage: https://github.com/brona/iproute2mac
This is CLI wrapper for basic network utilities on Mac OS X inspired with iproute2 on Linux systems.
Provided functionality is limited and command output is not fully compatible with iproute2.
For advanced usage use netstat, ifconfig, ndp, arp, route and networksetup directly.

Przykłady

Pokaż adresy IP w interfejsie en0.

$ ip addr show en0
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether 54:46:12:fc:45:12
    inet6 fe80::3636:3bff:fecf:1294/64 scopeid 0x4
    inet 192.168.1.5/24 brd 192.168.1.255 en0

Pokaż szczegóły dotyczące linku en1.

$ ip link show en1
en1: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
    options=60<TSO4,TSO6>
    ether 72:00:08:81:d2:10
    media: autoselect <full-duplex>
    status: inactive

Bibliografia

slm
źródło
6

Użyj normalnego polecenia dla systemów UNIX, takich jak: ifconfig.

(Linux używa również ifconfig, ale niektóre narzędzia mają nowsze wersje. ipJest jednym z tych, które pewnego dnia zastąpią stary ifconfig.)

Hennes
źródło
Jak mogę zainstalować to polecenie ip w systemie Mac OS? Chcę trochę funkcji, takich jak dodanie MAC-VLAN!
Aryjczyk
Nie jestem pewien, czy potrafisz. Cały świat (no oprócz Windowsa używającego ipconfig i niektórych współczesnych linuksów, które używają zarówno ip, jak i ifconfig) używa ifconfig. Obejmuje to OS X. Nie mam Maca do testowania, ale patrzę na polecenia vconfig add n0 42(skonfiguruj VLAN 42 dla interfejsu sieciowego EN0), a następnie coś w tym rodzaju ifconfig en0.5 1.2.3.3 netmask 255.255.128.0 broadcast 1.2.3.255 up.
Hennes,
1
ifconfigwypisuje wiele niepotrzebnych linii. Jeśli IP jest wszystkim, czego potrzebujesz, użyj ifconfig | grep inetzamiast tego.
Akseli Palén
Również ifconfig jest przestarzałe: google.de/…
oleiade
3

Istnieje prostszy sposób bez instalowania żadnych narzędzi:

$ which ifconfig
/sbin/ifconfig

$ ifconfig en0 | grep inet | grep -v inet6 | cut -d ' ' -f2
10.16.45.123
Andrei Sura
źródło
0

Na komputerze Mac nie ma polecenia ip. Zdobądź z naparu lub użyj:

ifconfig en0| grep "inet[ ]" | awk '{print $2}'

Możesz utworzyć alias w ~/.bash_profilenastępujący sposób:

alias ip-addr="ifconfig en0| grep \"inet[ ]\" | awk '{print \$2}'"
Loke
źródło