Làm thế nào để tái tạo 70-kiên trì net.rules mà không cần khởi động lại?


14

Tệp /etc/udev/rules.d/70-persistent-net.rulesđược tạo tự động trên hệ thống Linux với udev, nếu không tồn tại, trong khi khởi động lại. Nhưng tôi muốn biết cách tạo tệp quy tắc này (bằng lệnh) mà không cần khởi động lại máy chủ.

Tôi đã Googling một lúc và thấy rằng tệp quy tắc được tạo bởi tập lệnh này:

/lib/udev/write_net_rules

Tuy nhiên, không thể chạy tập lệnh này từ dòng lệnh, vì (tôi giả sử) nó muốn được bắt đầu bởi udev, với một số biến môi trường được đặt đúng. Bắt đầu bằng tay, in thông báo lỗi "thiếu $ INTERFACE". Ngay cả khi tôi đặt biến env INTERFACE = eth0 trước khi bắt đầu tập lệnh, nó vẫn in lỗi "thiếu khớp hợp lệ". Chưa kể tôi có hai giao diện ( eth0eth1) và tôi muốn tệp quy tắc được tạo cho cả hai.

Tôi cũng đã suy nghĩ để kích hoạt các sự kiện udev như thế này, hy vọng nó sẽ bắt đầu kịch bản từ chính udev, nhưng không có gì thay đổi:

udevadm trigger --type=devices --action=change

Vì vậy, có ai biết làm thế nào để tạo lại các quy tắc mạng liên tục trong tệp /etc/udev/rules.d/70-persistent-net.rulesmà không cần khởi động lại không?


Phân phối của bạn là gì? Nó sử dụng loại hệ thống init nào?
michas

1
Tôi sẽ nói rằng điều đó là không liên quan. Tôi đang sử dụng Slackware với eUdev và sysvinit. Tôi đã kiểm tra các tập lệnh khởi động để tìm ra cái gì được thực thi tạo ra tệp quy tắc, nhưng chỉ tìm thấy trình kích hoạt udevadm, với một nhận xét rằng đây là lệnh để tạo các quy tắc liên tục, nhưng bằng cách nào đó, nó chỉ hoạt động khi khởi động lại, không hiệu ứng nếu tôi chạy nó bằng tay.
Tomas M

1
Nó có thể là có liên quan kể từ khi tôi, trên Arch, vừa không có sự 70-persistent-net.ruleslẫn /lib/udev/write_net_ruleskịch bản. Do đó, tôi không thể kiểm tra, nhưng có lẽ $INTERFACEbiến được đặt trong chính tập lệnh. Hầu hết có lẽ nó được thông qua như là một đối số. Bạn có thể chỉ cho chúng tôi nội dung của kịch bản?
terdon

Kịch bản chỉ đơn giản là sử dụng $INTERFACEbiến. Có nhiều biến được sử dụng đơn giản hơn, không bao giờ được khai báo. Đó là bởi vì nó được gọi bởi udev và udev đặt tất cả các biến env trước khi nó chạy tập lệnh khi khởi động.
Tomas M

Bạn có thực sự cần phải biết cách tạo lại nó, hoặc bạn có thể chỉnh sửa tập tin để phản ánh thực tế mới không?
roaima

Câu trả lời:


5

Theo trang man --action=changelà giá trị mặc định cho udevadm.

   -c, --action=ACTION
       Type of event to be triggered. The default value is change.

Do đó, bạn nên thử --action=addthay thế. Nó sẽ giúp:

/sbin/udevadm trigger --type=devices --action=add

intel_rapl: không tìm thấy tên miền rapl hợp lệ trong gói 0
Tiina

1

Trong Ubuntu Server 16.04LTS, net.rules 70 không tồn tại.

tất cả những gì tôi đã làm là chạy:

ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules

Sau đó tạo tập tin bằng cách sử dụng

sudo vi /etc/systemd/network/10-internet.link

và thêm vào như sau

[Match] 
Path=pci-0000:(your device mac address)

[Link] 
Name=eth0 (or whatever you want to name it)

:wq lưu tập tin

sau đó khởi động lại và điều chỉnh tập tin / etc / mạng / giao diện của bạn. Sau đó khởi động lại một lần nữa.


9
Câu hỏi là "Làm thế nào để tái tạo 70-kiên trì net.rules mà không cần khởi động lại? " Câu trả lời của bạn có hai lần khởi động lại. Làm thế nào đây là một câu trả lời cho câu hỏi?
G-Man nói 'Phục hồi Monica'

0

Tôi có cùng một vấn đề, nhưng tôi nhận thấy tôi vẫn có thể thấy các giao diện trong ip addrdanh sách. Tôi đã sử dụng như sau (như root):

# ip addr # to get my mac addresses
# export INTERFACE=eth0; export MATCHADDR="xx:xx:xx:xx:xx:xx"; /lib/udev/write_net_rules
# replace the 00's with the real mac addr

Lặp lại cho mỗi giao diện. Điều này đã được sử dụng để "phục hồi" tập tin của tôi. (Lưu ý: một lệnh gọi sẽ liệt kê tất cả các giao diện + thêm đổi tên cho khớp với một giao diện, vì vậy tôi khuyên bạn nên xem tệp đầu ra sau một lần gọi)

Chắc chắn có sự khác biệt giữa các tập lệnh hỗ trợ và triển khai UDEV của OS và hiện tại. Để lưu ý, tôi đã sử dụng CentOS 6.8 khi tôi thực hiện thành công.

Tín dụng - Tôi chủ yếu tham khảo trang web này. Có một bình luận một vài chủ đề nói về việc sửa đổi tập lệnh, nhưng tôi thích sử dụng các biến môi trường hơn vì nó sạch hơn: https://access.redhat.com/discussions/1240213


Tào lao - chờ đợi. Tôi xin lỗi, đó là lệnh không hoạt động. Tôi cần cập nhật câu trả lời với bước tôi đã làm
gravy21

Ok, tôi đã cập nhật cách tôi thực sự sửa lỗi. Hy vọng nó hoạt động nếu nó áp dụng cho tình huống của bạn.
gravy21
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.