Pythonla IP adreslerimizi öğrenelim

Kullandığım modem sebebiyle ipconfig ve iwconfigle external IP adresimi göremiyorum. Sürekli eklenti ve pluginler kullanmakta açıkcası canımı sıktı. Ne yapabilirim diye düşünürken konu yazmaya bahane çıksın dedim. Önce IP adresini çeker, gösterir sonraki makalede de bir eklenti haline getiririz dedim. Hedefler büyük yani.

Ön hazırlık için, eklentide de kullanmak üzere droidpark.com altına bir service açtım. WanIP nizi gösteren bir servis, ihtiyaç duyanlar kullanabilir.

Servis adresi : http://droidpark.com/whatismyip/

Python kodlarımızsa şöyle;

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#   Droidpark Technologies
#   MaqasNet Software Development Team
#   2012-01-21 20:03
#   info@maqas.net

#Kütüphaneleri yüklüyoruz
import urllib2
import socket

# WAN IP çektiğimiz hizmetin adresi
url = "http://droidpark.com/whatismyip/"
# Socketten PC adını çekiyoruz
hostName = socket.gethostname()
# Socketten Local IP çekiyoruz
lanIP = socket.gethostbyname(socket.gethostname())
#IO hatası verebiliyor, kontrolümüze alalım
try:
    #Adresi alalım
    adresiAl = urllib2.urlopen(url)
    #çıktıyı okuyup değişkene atayalım
    wanIP = adresiAl.read()
    #Adresi kapatalım
    adresiAl.close()
except IOError:
    print "Şuanda IP adresiniz alınamıyor."
     wanIP = "Error!"

# Sonuçları ekrana basalım  
print "*"*40
print "Makine adı \t\t: %s" % hostName
print "WAN IP Adresiniz \t: %s" % wanIP
print "LAN IP Adresiniz \t: %s" % lanIP
print "*"*40


ben kodları getip.py olarak adlandırıp kaydettim. Fakat ben sadece kodun çalışmasını istemiyorum, kodun sistemin bir parçası olarak her çağırdığım yerden direkt çalışmasını istiyorum.

Bunun için şu yolu izledim;

Önce dosyaya çalıştırabilirlik verdim
# chmod +x getip.py

Sonrasında sistemimin path değerlerini öğreniyorum. Neden? python dosyamı bu yollardan birine kayıt edersem direk çağırabilirim.
Pathları öğrenmek için
# echo $PATH

yazıyoruz.

Çıkan sonuç bende ;
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

ben burada tercihen /usr/bin i kullanacağım;
 # cp getip.py /usr/bin/getip

dikkatinizi çekeceğim bir nokta daha var, dosyayı uzantısız kaydettim. Bildiğiniz gibi linux altında uzantıların hiçbir anlamı yoktur.

Evet, şimdi son olarak yaptıklarımızı deneyelim. Bunun için herhangi bir yerden, terminali açıp getip yazıyoruz. Ve uygulamamız bir hata yoksa çalışıyor. Bendeki ekran görüntüsü aşağıdaki gibidir.

2012-01-21-21-19-55.png 

Bir sonraki aşamada eklentimizi yapacağız. WanIP çekmenin birkaç farklı yolu vardır. Sonraki adım olan eklenti çalışması için ben bu metodla çekmenin uygun olacağını düşündüm. Eğer bilgisayar internete bağlı değilse sorun olacaktır.

Sağlıcakla kalın

Hakan Müştak








0.0333800315857 | 3.5