Tôi có một số máy chủ CentOS7 có hai địa chỉ IP, ở hai mạng con khác nhau (giả sử 192.168.1.0/24 và 192.168.2.0/24).
Một số máy chủ có hai kết nối mạng vật lý và các địa chỉ khác nhau được gán cho các thiết bị khác nhau bằng hai (NetworkManager's) riêng biệt kết nối:
kết nối nmcli thêm loại tên miền ethernet SUBNET1 ifname eth0 ip4 192.168.1.1/24 ...
kết nối nmcli thêm loại tên miền ethernet SUBNET2 ifname eth1 ip4 192.168.2.1/24 ...
Tôi cũng có một số tập lệnh để thiết lập động một số thuộc tính của kết nối, ví dụ.:
kết nối nmcli sửa đổi SUBNET2 +ipv4.routes "192.168.3.100 src=192.168.2.1"
Các máy khác trong cụm chỉ có một giao diện mạng vật lý và các địa chỉ trong mạng con 192.168.2.0/24 được gán làm bí danh cho eth0.
Hy vọng của tôi là sử dụng các tập lệnh hiện có trên tất cả các máy trong cụm. Thật không may, mặc dù bạn có thể định nghĩa hai kết nối sử dụng cùng một thiết bị, bạn không thể kích hoạt chúng cùng nhau (tức là chúng không được 'hợp nhất'). Điều này thật đáng tiếc vì sự tách biệt về mặt khái niệm của hai đối tượng, với các thuộc tính tương ứng của chúng, là một sự trừu tượng nhỏ.
Trên những máy này, tôi phải xác định một sự liên quan (ví dụ: 'HỆ THỐNG') với địa chỉ bot, tức là
kết nối nmcli thêm loại tên miền ethernet HỆ THỐNG ip4 192.168.1.x/24,129.168.2.x/24 ...
nhưng kể từ khi kịch bản dựa trên sự liên quan name ("SUBNET1" hoặc "SUBNET2"), chúng sẽ không hoạt động ở đây.
Vì vậy, câu hỏi là: Làm cách nào tôi có thể truy xuất tên của các kết nối có địa chỉ trong một mạng con nhất định theo chương trình để tôi có thể biến tên kết nối được mã hóa cứng thành một tham số?
Tái bút để chỉnh sửa các thuộc tính kết nối mà tôi muốn sử dụng nmcli
chỉ, tôi không muốn thêm các tuyến đường bằng cách sử dụng ip
lệnh hoặc bằng cách sửa đổi trực tiếp các tệp trong /etc/sysconfig/network-scripts/
.