
Quieres saber tu IP publica por medio de una aplicación de escritorio escrita e Python? Tal vez te interese saber a que país pertenece una IP publica! Bueno, el siguiente código que les traigo puede resultar muy útil y se pueden hacer grandes proyectos con una implementación mayor del mismo.
El código requiere la instalación de geoiplookup, un programa por consola del cual obtendremos el país de nuestra IP...(si no está instalado, el código te dará la opción de hacerlo)
Yo he pensado en eso y he querido compartirlo con todos los pythonianos del mundo.
> obtener la IP publica del sistema
Nombre del sistema
Nombre del usuario que ha iniciado sección en el sistema
En que país se encuentra ubicado dicho sistema...
son varias de las cosas que puedes gestionar con InfoSistema.py pero lo mas importante es "aprender". Saludos y aprovéchenlo de buena manera.
Código Python
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# InfoSistema.py
__licence__ = "GPL"
import os
import commands
import datetime
# DEPENDENCIAS = geoiplookup del paquete geoip-bin para saber el país por medio de la IP
# Módulo para obtener información del sistema operativo.
class InfoSistema():
"""Clase para obtener información del sistema operativo actual."""
def GetIpPublica(self):
"""Obtiene la IP pública del sistema leyendo www.showmyip.com"""
import re, urllib2
s = urllib2.urlopen('http://www.showmyip.com').read()
m = re.search('(?<=displaycopy).*', s)
ip = m.group(0).replace("('", "").replace("');", "")
return ip
def GetUsuario(self):
"""Obtiene el nombre del usuario actual"""
return os.getlogin()
def GetNombreSistema(self):
"""Obtiene el nombre del sistema"""
return os.name
def GetSistema(self):
"""Obtiene detalles del sistema operativo"""
return os.uname()
def GetFecha(self):
"""Obtiene la fecha y hora actual del sistema"""
return datetime.datetime.today()
def GetPais(self, IP=None):
"""Obtiene el país asociado a la IP pública"""
if IP is None:
IP = self.GetIpPublica()
pais = commands.getoutput("geoiplookup " + str(IP))
if pais == "sh: geoiplookup: not found":
print("geoiplookup no está instalado")
resp = raw_input("¿Instalar geoiplookup? (s/n) ")
if resp.lower() == "s":
print("Instalando...")
os.system("sudo apt-get install geoip-bin")
pais = commands.getoutput("geoiplookup " + str(IP))
return pais
else:
return None
elif len(str(pais)) > 200:
print("No se pudo obtener el país para la IP " + str(IP))
return False
else:
return pais
if __name__ == "__main__":
print(__blog__)
print(__author__)
print("......................................................")
info = InfoSistema()
funciones = {
"1": "info.GetIpPublica()",
"2": "info.GetUsuario()",
"3": "info.GetNombreSistema()",
"4": "info.GetSistema()",
"5": "info.GetFecha()",
"6": "info.GetPais()",
"7": "exit()"
}
while True:
print("Elija:")
elegir = raw_input(
"IP Pública: 1\nUsuario: 2\nNombre del Sistema: 3\nSistema: 4\n"
"Fecha: 5\nPaís: 6\nSalir: 7\n"
)
f = funciones[elegir]
exec "print(" + str(f) + ")"