معالجة واجهات شبكة متعددة في بيثون
-
11-09-2019 - |
سؤال
كيف يمكنني القيام بالأشياء التالية في Python:
- قم بإدراج جميع واجهات IP على الجهاز الحالي.
- تلقي التحديثات حول التغييرات في واجهات الشبكة (ترتفع، تنخفض، وتغيير عنوان IP).
أي حزمة python المتاحة في أوبونتو هاردي سوف تفعل.
المحلول
أعتقد أن أفضل طريقة للقيام بذلك dbus-python..
ال الدورة التعليمية تلامس على واجهات الشبكة قليلا:
import dbus
bus = dbus.SystemBus()
proxy = bus.get_object('org.freedesktop.NetworkManager',
'/org/freedesktop/NetworkManager/Devices/eth0')
# proxy is a dbus.proxies.ProxyObject
نصائح أخرى
لقد كنت أستخدم التعليمات البرمجية التالية،
temp = str(os.system("ifconfig -a | awk '$2~/^Link/{_1=$1;getline;if($2~/^addr/){print _1" "}}'"))
سيعطي واجهات الشبكة "UP"
على سبيل المثال ETH0، ETH2، WLAN0
لا، لا ... لا تحتاج إلى إزعاج نظام Os.System () أو DBUS API.
ما تحتاجه حقا هو استخدام API NETLINK لتنفيذ هذا. إما استخدام libnl. واجهة (netlink.route.link) أو التعامل مع رسائل netlink بنفسك. إلقاء نظرة على هذا المثال.
لا تنتمي إلى StackOverflow