Python - detectar conexiones abiertas

 
Vista:
sin imagen de perfil

detectar conexiones abiertas

Publicado por topete (4 intervenciones) el 26/06/2014 14:00:29
Hola,

Intento crear un pequeño script, que lea línea por línea un archivo de texto que tiene una dirección ip por línea. Quiero que el script lea el archivo y para cada ip compruebe si puede abrir una conexión telnet. Si puede, escribe dicha ip en otro archivo txt donde irán todas las ips que puedan abrir conexión, y si no puede que lo escriba en otro archivo de texto donde van las ips que no tienen telnet abierto.

El problema es que me detecta solo una dirección ip con el puerto abierto, pero eso no es cierto, hay más. Algo debo tener muy mal pero lo ignoro.

Cualquier ayuda se agradece.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import sys, telnetlib
 
ips = open('listadeips.txt','r')
closed = open('cerrado.txt','w')
opened = open('abierto.txt','w')
tn = telnetlib.Telnet()
 
for line in ips.readlines():
	try:
		tn.open(line)
		opened.write(str(line))
		print ":)"
		tn.close()
	except:
		closed.write(str(line))
		print ":("



Uso windows 7 con python 2.7
Saludos y gracias.
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
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

detectar conexiones abiertas

Publicado por xve (1646 intervenciones) el 26/06/2014 16:51:08
Hola Topete, el código esta bien, lo he probado y funciona... el problema puede ser que al no tener un timeout, se te queda mucho rato esperando... prueba así:
1
tn.open(host=line, timeout=5)

Coméntanos, ok?
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

detectar conexiones abiertas

Publicado por topete (4 intervenciones) el 26/06/2014 17:01:09
Hola, agradezco tu respuesta

Sigue igual, pueden probar generar un iplist.txt con unas 10 direcciones ip y que al menos 2 tengan telnet abierto. En el mejor de los casos detecta uno (lo detecta bien, pero faltaria otra). En el peor caso ninguno.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import sys, telnetlib
 
ips = open('iplist.txt','r')
closed = open('telnet-cerrado.txt','w')
opened = open('telnet-abierto.txt','w')
tn = telnetlib.Telnet()
 
for line in ips.readlines():
	try:
		tn.open(host=line, timeout=5)
		opened.write(str(line))
		print ":)"
		tn.close()
	except:
		closed.write(str(line))
		print ":("

Tambien he probado con sockets y me ocurre igual,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import sys
import socket
 
ips = open('iplist.txt','r')
opentel = open('telnet-abierto.txt','w')
closedtel = open('telnet-cerrado.txt','w')
socket = socket.socket()
 
for line in ips.readlines():
    try:
        socket.connect((line,23))
        opentel.write(str(line))
		print ":)"
        socket.close()
    except:
        closedtel.write(str(line))
		print ":("




Saludos!
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

detectar conexiones abiertas

Publicado por topete (4 intervenciones) el 27/06/2014 12:58:16
Esto tiene que ser por windows...
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