Xác định giao diện ethN chứa một octet cụ thể trong CentOS


2

Tôi có một nhu cầu cụ thể để xác định giao diện nào là một phần của octet (ví dụ xx.xx.xx.112) thuộc về máy CentOS

Ý tưởng ban đầu của tôi là kết xuất đầu ra ifconfigvà phân tích thủ công để xác định giao diện tương ứng. Đó là cách tiếp cận đúng hay một cách tốt hơn tồn tại để làm điều này?

Nỗ lực thô thiển của tôi sẽ là một cái gì đó như dưới đây trong GNU grep,

ifconfig | grep -B1 -E '\.112' | grep -oP 'e\w+:'

Câu trả lời:


3

Tôi nghĩ rằng một awkcâu trả lời có thể nhanh hơn một chút vì nó sẽ không cần thêm các chuỗi con:

ip addr show | awk -F: '/^[0-9]/ {dev=$2} /inet .*\.112/ {print dev; exit}'

Một khả năng khác, nếu bạn biết một địa chỉ sẽ được chuyển ra khỏi giao diện, như giả sử có một cổng tại .1địa chỉ bạn có thể làm

ip route get a.b.c.1 | cut -f3 -d' '

Nói chung iplà lệnh mới hơn được cho là sẽ thay thế ifconfig, mặc dù điều đó đã đúng trong một thời gian dài và ifconfigchưa biến mất, nhưng hãy xem câu hỏi về Lỗi Máy chủ này về chủ đề này.


Cảm ơn câu trả lời. Bạn có thể muốn kiểm tra lại dấu phân cách trường đầu vào, tôi đoán nó chưa được kết thúc. Bạn có thể sửa nó không?
Inian

@Inian Oops, xin lỗi vì sao chép xấu, tôi đã sửa nó để mất dấu hai chấm. FWIW điều này được thực hiện trên hộp 6 centos, đầu ra của bạn có thể hơi khác nếu bạn có phiên bản khác
Eric Renouf

Yup, nó đang hoạt động. Tôi đã có thể tự sửa nó, nhưng mối quan tâm lớn nhất của tôi ngoài vấn đề này là, nếu đây là cách tiếp cận đúng (phân tích đầu ra của ifconfig) để xác định giao diện cho IP? Điều này sẽ có hiệu quả?
Inian

1
@Inian tốt, ngoài khuyến nghị chuyển sang ipthay vì ifconfigtôi không nghĩ rằng đây là một cách tiếp cận xấu về mặt triết học, và tôi hy vọng rằng nó thực sự sẽ có hiệu quả. Tất nhiên, tùy thuộc vào những gì bạn đang cố gắng thực hiện cuối cùng, có thể có những cách khác để thực hiện mục tiêu đó
Eric Renouf
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.