Cách lấy cổng mặc định trong Mac OSX


119

Tôi cần truy xuất cổng mặc định trên máy Mac. Tôi biết rằng trong Linux route -n sẽ đưa ra một đầu ra mà từ đó tôi có thể dễ dàng truy xuất thông tin này. Tuy nhiên, điều này không hoạt động trong Mac OSX (Snow Leopard).

Tôi cũng đã thử netstat -nr | grep 'default', nhưng tôi hy vọng có một đầu ra sạch hơn như được tạo ra bởi route -nLinux / Unix.netstat -nrliệt kê tất cả các giao diện và cổng mặc định cho chúng.

Bất kỳ loại gợi ý hoặc một gợi ý đúng hướng sẽ được đánh giá cao.


3
Chuyển sang SuperUser?
JMD

3
FYI bạn có thể Tùy chọn + nhấp vào biểu tượng WiFi trên thanh trạng thái. Điều này hiển thị thông tin bổ sung, bao gồm cả cổng.
Petr Újezdský

Câu trả lời:


189

Bạn có thể thử với:

route -n get default

Nó không giống như GNU / Linux route -n(hoặc thậm chí ip route show) nhưng hữu ích để kiểm tra thông tin tuyến đường mặc định. Ngoài ra, bạn có thể kiểm tra lộ trình mà các gói sẽ chuyển đến một máy chủ cụ thể. Ví dụ

route -n get www.yahoo.com

Đầu ra sẽ tương tự như:

   route to: 98.137.149.56
destination: default
       mask: 128.0.0.0
    gateway: 5.5.0.1
  interface: tun0
      flags: <UP,GATEWAY,DONE,STATIC,PRCLONING>
 recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
       0         0         0         0         0         0      1500         0

IMHO netstat -nrlà những gì bạn cần. Ngay cả ứng dụng tiện ích Mạng của MacOSX (*) cũng sử dụng đầu ra của netstat để hiển thị thông tin định tuyến. Ảnh chụp màn hình tiện ích mạng hiển thị thông tin bảng định tuyến

Tôi hi vọng cái này giúp được :)

(*) Bạn có thể khởi động Tiện ích mạng với open /Applications/Utilities/Network\ Utility.app


Cảm ơn. Bạn vừa cứu tôi vài giờ tại ngôi nhà mới khi modem của Time Warner quyết định nó muốn có IP mà bộ định tuyến của tôi từng có và ifconfig đã nói dối về cổng kết nối.
Chris Doggett

38

Để nhận được danh sách các địa chỉ IP đi kèm, bạn có thể sử dụng netstat lệnh

netstat -rn 

Điều này cung cấp một danh sách dài các địa chỉ ip và không dễ dàng để tìm thấy trường cần thiết. Kết quả mẫu như sau:

Routing tables
Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            192.168.195.1      UGSc           17        0     en2
127                127.0.0.1          UCS             0        0     lo0
127.0.0.1          127.0.0.1          UH              1   254107     lo0
169.254            link#7             UCS             0        0     en2
192.168.195        link#7             UCS             3        0     en2
192.168.195.1      0:27:22:67:35:ee   UHLWIi         22      397     en2   1193
192.168.195.5      127.0.0.1          UHS             0        0     lo0

More result is truncated.......

Địa chỉ ip của gateway nằm ở dòng đầu tiên; một với mặc định ở cột đầu tiên của nó.

Để chỉ hiển thị các dòng kết quả đã chọn, chúng ta có thể sử dụng lệnh grep cùng với netstat

netstat -rn | grep 'default'

Lệnh này lọc và hiển thị những dòng kết quả có mặc định. Trong trường hợp này, bạn có thể thấy kết quả như sau:

default            192.168.195.1      UGSc           14        0     en2

Nếu bạn quan tâm đến việc chỉ tìm địa chỉ ip của gateway và không có gì khác, bạn có thể lọc thêm kết quả bằng awk . Lệnh awk khớp với mẫu trong kết quả đầu vào và hiển thị đầu ra. Điều này có thể hữu ích khi bạn đang sử dụng trực tiếp kết quả của mình trong một số chương trình hoặc công việc hàng loạt.

netstat -rn | grep 'default' | awk '{print $2}'

Lệnh awk yêu cầu khớp và in cột thứ hai của kết quả trong văn bản. Kết quả cuối cùng như sau:

192.168.195.1

Trong trường hợp này, netstat hiển thị tất cả kết quả, grep chỉ chọn dòng có 'mặc định' trong đó và awk khớp thêm với mẫu để hiển thị cột thứ hai trong văn bản.

Tương tự, bạn có thể sử dụng lệnh route -n get default để nhận được kết quả cần thiết. Lệnh đầy đủ là

route -n get default | grep 'gateway' | awk '{print $2}'

Các lệnh này hoạt động tốt trong linux cũng như hệ thống unix và MAC OS.


8

Tiện ích grep không cần thiết. Awk có thể làm tất cả:

    netstat -rn | awk '/default/ {print $2}'
      192.168.128.1

Lưu ý rằng nếu bạn có thứ gì đó như Parallels (hoặc VPN, hoặc cả hai) đang chạy, bạn có thể thấy hai hoặc nhiều mục định tuyến mặc định - điều này cũng đúng nếu bạn sử dụng đề xuất 'grep' ở trên.

    netstat -rn | awk '/default/ {print $2}'
      192.168.128.1
      link#12

    netstat -rn | awk '/default/ {print $2}'                             
      utun1
      192.168.128.1
      link#12

Để đặt một biến (_default) để sử dụng thêm (giả sử chỉ có một mục nhập cho 'default') .....

    _default=$( netstat -rn inet | awk '/default/ {print $2}' ) # I prefer $( ... ) over back-ticks

Trong trường hợp có nhiều tuyến đường mặc định, hãy sử dụng:

    netstat -rn | awk '/default/ {if ( index($6, "en") > 0 ){print $2} }'
      192.168.128.1

Những ví dụ này đã được thử nghiệm trong Mavericks Terminal.app và chỉ dành riêng cho OSX. Ví dụ: các phiên bản * nix khác thường sử dụng 'eth' cho các kết nối ethernet / không dây, không phải 'en'. Điều này cũng chỉ được thử nghiệm với ksh. Các trình bao khác có thể cần một cú pháp hơi khác.


3

Tôi sẽ sử dụng một cái gì đó dọc theo những dòng này ...

 netstat -rn | grep "default" | awk '{print $2}'

Làm thế nào chúng ta có thể đạt được điều này trong lập trình target-c. Có frameork cho điều này
MacDeveloper

0

Sử dụng Tùy chọn Hệ thống:

Bước 1: Nhấp vào biểu tượng Apple (ở trên cùng bên trái màn hình) và chọn System Preferences.

Bước 2: Nhấp vào Mạng.

Bước 3: Chọn kết nối mạng của bạn và sau đó nhấp vào Nâng cao.

Bước 4: Chọn tab TCP / IP và tìm địa chỉ IP cổng của bạn được liệt kê bên cạnh Bộ định tuyến.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.