Python - obtener la ip y mascara de red procesando la salida del comando ifconfig

 
Vista:

obtener la ip y mascara de red procesando la salida del comando ifconfig

Publicado por Daniel (7 intervenciones) el 07/07/2018 01:05:17
Hola:

Estamos con python y nos han propuesto un ejercicio para subir nota y me vendría bastante bien.
Básicamente pide:

obtener la ip y mascara de red procesando la salida del comando ifconfig.

¿Podríais echarme una mano? mi nivel de python no llega a esto..

Gracias por adelantado
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

obtener la ip y mascara de red procesando la salida del comando ifconfig

Publicado por daniel (7 intervenciones) el 08/07/2018 04:02:10
como pista me dijeron que debía usar subproccess y check_out
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 333
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

obtener la ip y mascara de red procesando la salida del comando ifconfig

Publicado por dario (60 intervenciones) el 08/07/2018 11:41:57
Haber si esto te ayuda.
Esto (wlp8s0) tienes que cambiarlo por el nombre de interface de tu tarjeta de red, cuando haces ifconfig te aparece al final.
Salu2.


1
2
import subprocess
subprocess.call(["ifconfig","wlp8s0"])
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

obtener la ip y mascara de red procesando la salida del comando ifconfig

Publicado por daniel (7 intervenciones) el 08/07/2018 15:29:21
Mil gracias.. comprobado y funciona. Me saca todo lo relativo a esa interfaz de red.

Habría opción de filtrar la información para sólo mostrar la ip y máscara?

De nuevo mil gracias por tu aporte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

obtener la ip y mascara de red procesando la salida del comando ifconfig

Publicado por daniel (7 intervenciones) el 08/07/2018 16:56:39
Debo crear una función y pasarle como parámetro la interfaz de red que quiera "eth0" por ejmplo, y que al llamar a esa función sólo me duevuelva esos 2 datos...(ip y netmask)

ayuda???
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 1.679
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

obtener la ip y mascara de red procesando la salida del comando ifconfig

Publicado por xve (1638 intervenciones) el 08/07/2018 20:30:50
Una manera para obtenerla con subprocess puede ser esta: (para Linux)
1
2
3
4
5
6
7
8
9
10
import subprocess
import re
 
result=subprocess.Popen(["ip", "address", "show", "dev", "eth0"], stdout=subprocess.PIPE)
 
cadena=str(result.communicate()[0])
 
ip=re.findall("inet [0-9]{,3}\.[0-9]{,3}\.[0-9]{,3}\.[0-9]{,3}",cadena)
if ip and len(ip[0].split())==2:
    print(ip[0].split()[1])

En mi caso utilizo ip en vez de ifconfig!!

Espero que te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

obtener la ip y mascara de red procesando la salida del comando ifconfig

Publicado por daniel (7 intervenciones) el 08/07/2018 20:37:36
Es perfecto!!! pero sólo me devuelve la IP. Se podría añadir la máscara de alguna forma?

Gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 1.145
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

obtener la ip y mascara de red procesando la salida del comando ifconfig

Publicado por kip (257 intervenciones) el 08/07/2018 21:50:32
Excelente Xve, que bueno que se use el modulo subprocess para esto y no el obsoleto os.system que es una mala práctica teniendo el modulo anterior mucho mas seguro.

Pero creo que si solo quieres hacer obtener la salida de un comando es mejor usar la función check_output

1
2
3
import subprocess
output = subprocess.check_output(["ip", "address", "show", "dev", "eth0"])
# more code

Yo lo haria de esta forma con ifconfig:

1
2
3
4
5
>>> import subprocess
>>> import re
>>> output = subprocess.check_output(["ifconfig", "eth0"])
>>> re.findall(r"inet ((\d+\.?)+).*mask ((\d+\.?)+)", output.decode("utf-8"))
[('192.168.83.132', '132', '255.255.255.0', '0')]

En aquella lista el indice 0 y 2 corresponden a la ip y a la netmask.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

obtener la ip y mascara de red procesando la salida del comando ifconfig

Publicado por daniel (7 intervenciones) el 08/07/2018 22:31:11
Muchas gracias por tu ayuda kip, ya que debo hacerlo con subprocess.check_output, pero al ejecutar tus 4 lineas de código, el sistema no me deuelve nada...estoy con python 2.7, puede ser el motivo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 1.145
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

obtener la ip y mascara de red procesando la salida del comando ifconfig

Publicado por kip (257 intervenciones) el 08/07/2018 22:45:16
Fijate que en el codigo que coloque no hay ningun print() porque lo ejecute desde el repl de python, creo que quizas eso te falte, intenta con un print asi:

1
print re.findall(r"inet ((\d+\.?)+).*mask ((\d+\.?)+)", output.decode("utf-8"))

Si estoy equivocado y no es el print, intenta con python3, en la mayoria de distros linux actuales tienes la version 3.

Por cierto python 2 si tiene el modulo subprocess
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

obtener la ip y mascara de red procesando la salida del comando ifconfig

Publicado por daniel (7 intervenciones) el 08/07/2018 22:50:29
Era el print..tantas horas dándole que se me pasa lo obvio....xdd

Muchas gracias a los 2 por vuestras colaboraciones, os lo agradezco enormemente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar