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;
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.
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
Ö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.
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


