Phát hiện tên của một thiết bị mạng trong bash?


12

Tôi đang cố gắng tạo ra một bản hack sẽ xuất ra tên của các thiết bị mạng đang hoạt động trên máy tính của một người thông qua bash. Tôi đang làm nó cho công việc. Làm thế nào để tôi đi về làm điều này? Tôi không muốn chỉ sử dụng "wlan0" hoặc "eth0" hoặc bất kỳ thứ nhảm nhí chung chung nào vì một số hệ điều hành sử dụng các tên khác nhau (ví dụ như pfSense chẳng hạn).

Câu trả lời:


28

Nó phụ thuộc vào ý nghĩa của bạn khi 'kích hoạt' - nếu bạn chỉ muốn xem tên của tất cả các thiết bị mạng trên hệ thống, bạn có thể xem nội dung của thư mục / sys / class / net, vd

$ ls /sys/class/net
eth0  lo  wlan0

Để xem trạng thái, bạn có thể sử dụng iplệnh trên bất kỳ linkđối tượng nào - bạn có thể phân tích cú pháp đầu ra để có được các trường cụ thể mà bạn muốn, ví dụ như chỉ nhìn thấy tên và trạng thái của thiết bị

$ ip -o link show | awk '{print $2,$9}'
lo: UNKNOWN
eth0: DOWN
wlan0: UP

Nếu bạn đang chạy phiên bản máy tính để bàn hiện đại của Ubuntu (với các giao diện được quản lý bởi dịch vụ quản lý mạng), thì bạn có thể nhận được danh sách trạng thái thiết bị tương tự bằng cách sử dụng nmcli

$ nmcli dev status
DEVICE     TYPE              STATE
wlan0      802-11-wireless   connected
eth0       802-3-ethernet    unavailable

hoặc, để giới hạn đầu ra cho các trường cụ thể theo cách dễ sử dụng hơn trong tập lệnh

$ nmcli --terse --fields DEVICE,STATE dev status
wlan0:connected
eth0:unavailable

Nếu bạn đang sử dụng trình quản lý mạng, bạn cũng có thể truy cập các thuộc tính của thiết bị và kết nối thông qua DBUS - xem ví dụ Hướng dẫn về Dbus - Vui với Trình quản lý mạng


2

Bạn có thể sử dụng ifconfigđể phát hiện các thiết bị mạng đang hoạt động, để sử dụng đầu ra nhỏ hơn một chút ifconfig -s. ifconfigin các giao diện hoạt động, với -abạn có thể in tất cả các giao diện được hệ thống nhận ra là giao diện mạng.

Hoặc sử dụng ip addr.


0

Tôi có thể không biết câu trả lời trực tiếp nhưng tôi sẽ cung cấp cho bạn một danh sách các lệnh mạng và có thể từ đó bạn có thể thử kết nối nó với những gì bạn cần làm.

Để xem mạng và để xuất tên của các thiết bị mạng đang hoạt động trên một máy tính, bạn có thể thử các lệnh sau:

ifconfig

Lệnh này cho phép chúng tôi phát hiện các thiết bị mạng đang hoạt động. Bạn cũng có thể sử dụng lệnh ifconfig -s để sử dụng đầu ra nhỏ hơn. Bạn có thể sử dụng lệnh này để cấu hình một giao diện cụ thể

ip addr

Lệnh này cho phép chúng tôi xem thông tin mạng mạng.

tcpdump

Lệnh này là một sniffer mạng. Những gì nó làm là nó bắt các gói từ một giao diện mạng và giải thích chúng cho bạn.

Nếu bạn nhận được một tin nhắn bị từ chối cấp phép, chỉ cần: **gksu yourcommand**để nó nhận được quyền root và buộc lệnh.

findsmb

Bạn có thể sử dụng lệnh này để liệt kê thông tin về các máy phản hồi các truy vấn tên SMB.

Nguồn: http://www.gymforgeek.com/topic/358445-/

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.