python codigo no funciona

Iniciado por winnipu, 11 Agosto 2015, 11:32 AM

0 Miembros y 1 Visitante están viendo este tema.

winnipu

Hola a todos. Acabo de empezar con python, he usado otros lenguajes antes como java y cpp. Para ir familiarizandome con el lenguaje he cogido unos codigos que hay por la red y los he testeado pero tengo prolblemas con algunos. Por ejemplo os voy a poner un codigo que no me funciona y no se a que se debe. Es un simple scanner de puertos, en principio estaba diseñado para python 2.7 y ejecutado en linux. Yo estoy intentando hacerlo trabajar bajo windows y con python 3.4.3. He modificado algunas cosas en el codigo, como los parentesis para los print (que no estaban), he cambiado los raw_input por input(), pero la cosa sigue sin rular. Alguien puede decirme que anda mal en el codigo? sigue siendo cosa de usarlo en windows o de la version de python que uso?

Os pego el code:

import socket
import subprocess
import sys
from datetime import datetime



# Ask for input
remoteServer    = input("Enter a remote host to scan: ")
remoteServerIP  = socket.gethostbyname(remoteServer)

# Print a nice banner with information on which host we are about to scan
print ("-" * 60)
print ("Please wait, scanning remote host", remoteServerIP)
print ("-" * 60)

# Check what time the scan started
t1 = datetime.now()

# Using the range function to specify ports (here it will scans all ports between 1 and 1024)

# We also put in some error handling for catching errors

try:
   for port in range(1,1025):  
       sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
       result = sock.connect_ex((remoteServerIP, port))
       if result == 0:
           print ("Port {}: \t Open".format(port))
       sock.close()

except KeyboardInterrupt:
   print ("You pressed Ctrl+C")
   sys.exit()

except socket.gaierror:
   print ('Hostname could not be resolved. Exiting')
   sys.exit()

except socket.error:
   print ("Couldn't connect to server")
   sys.exit()

# Checking the time again
t2 = datetime.now()

# Calculates the difference of time, to see how long it took to run the script
total =  t2 - t1

# Printing the information to screen
print ('Scanning Completed in: ', total)
input()


ivancea96

Sin hacerle los cambios que comentas, ¿funciona?

winnipu

He reiniciado pc y extrañamente ha funcionado. Imagino algun problema desconocido. Aun asi, que me recomiendas 2.7 o 3.4? Por lo que veo la mayoria de los programas que se encuentran en internet estan escritos en 2.7. Hay muchas mas cosas que hayan cambiado aparte del uso de los parentesis del print y de cambios de raw_input por input?

ivancea96

Sé que hay algunos cambios importantes entre 2.7 y 3.x que pueden dejar programas inválidos. Simplemente ten ambos intérpretes, y compila pues el que más te guste xD

Pero bueno, ya que salió 3.4, lo mejor sería andar con 3.4.

DarK_FirefoX

Después de ver este tema quise leer sobre los cambios de 2.x a 3.x y te comparto el link por si quieres leerlo. Me pareció bastante completo

https://wiki.python.org/moin/Python2orPython3

También vi este, pero no lo leí, así que no se que tal está:

https://ricardo705.wordpress.com/2015/01/03/python-2-x-y-python-3-x-diferencias-de-sintaxis-en-solo-4-paginas/

Salu2s

tincopasan

el code funciona, me imagino que has hecho la conversión de 2.7 a 3.4 a mano, pero python viene con una librería incorporada (2to3.py) si buscas te hace la conversión en la medida de lo posible, siempre que no use tu script modulos muy viejos (los cuales tendrias tambien que modificar).

winnipu

Gracias a todos por las buenas respuestas. Miro la info que habeis pasado encantado.
Si, hice la conversion a mano.