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ür | Açıklama |
|---|---|
| Statik IP | Değişmez, elle atanır |
| Dinamik IP | Modem 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.