Python ile IP Adresi Öğrenme

Kutay Utku
• 4 dk okuma

Günümüzde yazılım geliştirme, sadece kod yazmaktan ibaret değil; aynı zamanda sistemlerin, ağların ve cihazların nasıl iletişim kurduğunu anlamayı da gerektiriyor. Özellikle Python gibi güçlü bir programlama dili kullanıyorsanız, ağ (network) işlemlerine giriş yapmak oldukça kolaydır.

Bu yazıda, Python kullanarak cihazınızın yerel IP adresini, tüm ağ arayüzlerini, ve hatta kütüphane hatalarını nasıl çözeceğinizi adım adım öğreneceksiniz.

🌐 IP Adresi Nedir?

IP (Internet Protocol) adresi, bir cihazın ağ üzerindeki kimliğidir. Tıpkı bir ev adresi gibi çalışır. İnternette veri gönderirken ve alırken, veriler bu adres sayesinde doğru cihaza ulaşır.

📌 IP Türleri

1. Yerel IP (Private IP)

Ev veya ofis ağında kullanılan IP’dir. Genellikle şu şekildedir:

  • 192.168.x.x
  • 10.x.x.x
  • 172.16.x.x – 172.31.x.x

2. Genel IP (Public IP)

İnternette görünen IP adresidir. İnternet servis sağlayıcınız tarafından verilir.

🔁 Statik vs Dinamik IP

TürAçıklama
Statik IPDeğişmez, elle atanır
Dinamik IPModem tarafından otomatik atanır

Python bu ayrımı yapmaz, sadece mevcut IP’yi gösterir.

🐍 Python ile IP Adresi Alma

Şimdi asıl konuya geçelim: Python ile IP adresi nasıl alınır?

✅ Yöntem 1: Basit IP Alma (socket)

import socket

hostname = socket.gethostname()
ip_adresi = socket.gethostbyname(hostname)

print("IP Adresin:", ip_adresi)

🔎 Nasıl Çalışır?

  • Bilgisayarın adını alır
  • Bu adı IP adresine çevirir

⚠️ Sorun

Bazen şu sonucu verir:

127.0.0.1

Bu gerçek IP değil, localhost’tur.

✅ Yöntem 2: En Doğru Yerel IP

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
    s.connect(("8.8.8.8", 80))
    ip_adresi = s.getsockname()[0]
finally:
    s.close()

print("Yerel IP:", ip_adresi)

💡 Neden Bu Yöntem Daha İyi?

  • Gerçek bağlantı kurmaz
  • Aktif ağ kartını bulur
  • En doğru IP’yi verir

📡 Yöntem 3: Tüm Ağ Arayüzlerini Listeleme (psutil)

import socket
import psutil

for interface, addrs in psutil.net_if_addrs().items():
    for addr in addrs:
        if addr.family == socket.AF_INET:
            print(f"{interface}: {addr.address}")

🧩 Ne İşe Yarar?

  • Wi-Fi, Ethernet, VPN dahil her şeyi listeler
  • Gelişmiş analiz sağlar

❌ Hata: ModuleNotFoundError: psutil

Eğer şu hatayı alırsan:

ModuleNotFoundError: No module named 'psutil'

🔧 Çözüm

pip install psutil

Alternatif:

python -m pip install psutil

🔄 Alternatif (psutil olmadan)

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
    s.connect(("8.8.8.8", 80))
    ip = s.getsockname()[0]
finally:
    s.close()

print(ip)

🧠 Hepsini Birleştiren Gelişmiş Script

Artık öğrendiklerimizi tek bir scriptte birleştirelim:

import socket

def ana_ip():
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    try:
        s.connect(("8.8.8.8", 80))
        return s.getsockname()[0]
    finally:
        s.close()

def tum_ipler():
    try:
        import psutil
    except ImportError:
        print("psutil yüklü değil.")
        return {}

    ipler = {}
    for interface, addrs in psutil.net_if_addrs().items():
        ipler[interface] = []
        for addr in addrs:
            if addr.family == socket.AF_INET:
                ipler[interface].append(addr.address)
    return ipler

print("Ana IP:", ana_ip())

print("\nTüm IP’ler:")
for arayuz, ipler in tum_ipler().items():
    print(arayuz, ":", ipler)

🚀 Gerçek Hayat Kullanımları

Python ile IP öğrenme şunlarda kullanılır:

  • Sunucu yazılımları
  • Oyunlar
  • Chat uygulamaları
  • Network araçları
  • IoT projeleri

🔐 Güvenlik

IP adresi:

  • Ağ yapını açığa çıkarabilir
  • Hackerlar tarafından kullanılabilir

Dikkatli paylaşılmalıdır.

🧪 Bonus: Dış IP Alma

import urllib.request

ip = urllib.request.urlopen("https://api.ipify.org").read().decode()
print("Public IP:", ip)

🧠 Öğrendiklerin

Bu yazıdan sonra artık:

✔ Yerel IP alabiliyorsun
✔ Hataları çözebiliyorsun
✔ Tüm ağları listeleyebiliyorsun
✔ Gelişmiş script yazabiliyorsun

🎯 Sonuç

Python ile IP adresi öğrenmek oldukça basit ama güçlü bir beceridir. Doğru yöntemleri kullanarak hem kendi projelerinde hem de gerçek dünyada çok işine yarayacak araçlar geliştirebilirsin.

💬 Yorum Bırak