البايثون:الحصول على IP في اللينكس

Spread the love
بسم الله الرحمن الرحيم
لقد واجهتني مشكلة في بايثون عند أستخدام هذا النص البرمجي للحصول على الــ”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")

الكاتب geek4arab

geek4arab

مواضيع متعلقة

التعليقات مغلقة