بسم الله الرحمن الرحيم
لقد واجهتني مشكلة في بايثون عند أستخدام هذا النص البرمجي للحصول على الــ"IP" :
socket.gethostbyname(socket.gethostname())
فهذا النص البرمجي يعرض العنوان 127.0.0.1 دائما و ليس IP الخاص بالشبكة , لذا بعد بحث في الأنترنت عثرت على هذا الطريقة على نظام لينكس .
import socket import struct import fcntl def get_ip(ifname): s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) return socket.inet_ntoa(fcntl.ioctl( s.fileno(), 0x8915, # SIOCGIFADDR struct.pack('256s', ifname[:15]) )[20:24])
تستطيع أستخدام الــ"Function" للحصول على الـ"IP" كالتالي :
get_ip("eth1")
ليست هناك تعليقات:
إرسال تعليق