Instalar y correr python en ordenador remoto (windows 10)

hda

La verdad, no sé para qué uso Slack si me siento más a gusto aquí xD Pasteo la pregunta, a ver si me podéis ayudar.

os pongo en situación: tengo mi ordenador principal (A) que es desde el que programo en Python en Spyder, y tengo un portátil (B) que solo voy a dedicar a correr scripts. Ambos con windows 10 y por el momento en la misma intranet. La historia es que los códigos toman su tiempo en terminar, y son muchos.

He dejado (B) configurado para que esté encendido 24/7, la idea es poder conectarme a él en remoto para lanzar los scripts desarrollados en (A) y luego recuperar los archivos de salida de cada script.

¿Me podéis dar alguna recomendación? ¿Qué es lo mejor que puedo hacer? La solución de escritorio remoto y una carpeta compartida en la nube es demasiado burda. De hecho, me interesaría configurar un demonio para que corra los scripts cada cierto tiempo.

Muchas gracias

Fyn4r

Yo estoy en un caso similar y te cuento lo que he hecho (que probablemente no te funcione pero te comento la idea). Instalé WSL en la máquina que utilizo para ejecutar todo, le monté un servidor SSH y lo manejo todo desde bash, básicamente uso la máquina windows ignorando windows xD

2 respuestas
HeXaN

Cualquier IDE/editor moderno te permite trabajar por SSH en un PC remoto. Adicionalmente, otros IDE (como PyCharm) permiten directamente ejecutar en entornos virtuales remotos.

hda

#2 Algo he visto por encima de WSL mientras buscaba cómo solucionar esto.

Realmente el problema no debería ser tan complicado: tengo un .py que me corre todos los .py de la carpeta en paralelo. Vamos, que es conectarme por ssh para ejecutar 1 script nada más (o configurar un demonio para que lo haga cada cierto tiempo). Luego cada script escupe un excel. Podría crear un FTP en (B) para recuperarlos. Quizás sea lo ideal.

Con esto quiero decir, #2 , que no necesito tocar código en (B), sino solo ejecutar, por lo que instalar un IDE para eso... aunque si me permite el SSH remoto. No sé, no sé. Es un problema con muchas soluciones, busco guía para la más eficiente y sencilla.

2 respuestas
NeV3rKilL

#4 Si al final el portátil va a ser un servidor, ¿por qué no le metes ubuntu server y pista?

Le puedes meter los scripts via cron y el ssh viene de casa. Le pasas los archivos via samba o vía ssh con winscp. Con windows puedes hacer algo parecido con el programador de tareas para que se ejecuten las cosas.

Otra opción es monitorizar una carpeta o incluso un canal de telegram con un bot y ejecutar todo lo que le mandes por ahí.

Las opciones son infinitas.

2 respuestas
Fyn4r

#4 Es que el problema es sencillo, pero Windows lo complica a mi parecer. Si bien es cierto que se puede instalar open-ssh para windows y es fácil levantar un servidor ssh. De cara a hacer servicios/daemon o similares en windows no tengo ni idea, de ahí que siempre tire de WSL para estas cosas, cron y a correr jaja

Por otra parte, lo que dice el pato mayor de un IDE que te permita ejecutar en remoto yo también lo utilizo, más que nada porque me permite desplegar el código en 1 click, pero depende mucho del caso de uso.

1 respuesta
hda

#5 ya tío xDDD

Es un portátil corporativo, no puedo hacer nada. Vamos, y la que he tenido que liar para que me diesen una solución. Resulta que como mis scripts van por TOR los de mi institución tienen mucho miedo. De hecho, en vez de montarme un PC en las instalaciones me han dado el portatil y un router con 20gb. Y me han prohibido conectarme a la red institucional jaja

En resumen, que no puedo cambiar el OS.

#6 El pato mayor XDD Pues me informo más sobre WSL y pycharm para ssh. Lo de montar un FTP lo veo clarérrimo.

hda

@Fyn4r ¿Has montado WSL 1 o 2? He estado viendo y justo lo que tienes montado es lo que pretendo. ¿Tienes una guía maja paso a paso o busco info online?

Mi rostro no tiene límites pidiendo xD

1 respuesta
Fyn4r

#8 He montado ambos xD
Tenía WSL1 y me actualicé al 2, el cual creo que todavía está sólo para insiders, pero debería salir este mes si no me equivoco (si no salió a finales de mayo ya).

Básicamente son 2 pasos:

  • Habilitar la característica WSL
  • Instalar la distro que más te guste (las coges directamente de la windows store)

Básicamente esta guía
https://docs.microsoft.com/es-es/windows/wsl/install-win10

Ignora todo lo que sea relativo a WSL2 si no lo quieres, ya digo que creo que aún no está disponible para todos, tendrías que meterte al programa de insiders, que tampoco es algo terrible, es algo así como utilizar el repo de testing de Debian, no te garantizan que no explote todo pero no conozco a nadie que le haya pasado xD

1 2 respuestas
hda

#9 Muchas gracias, esta guía complementa lo que comentas: https://www.jetbrains.com/help/pycharm/using-wsl-as-a-remote-interpreter.html

En realidad, no sé por qué habría de elegir WSL 2 frente al 1. Lo único que quiero es conectarme por SSH, lanzar el comando, conectarme a los días por FTP y recoger las salidas de los scripts xD

Lo de montar el demonio sería un añadido.

1 respuesta
Fyn4r

#10 La versión 2 creo que ya tiene un kernel linux virtualizado, cosa que mejora, entre otras cosas, el rendimiento del sistema de ficheros.
Para lo que quieres te diría que no te molestes, que instales el que tengas disponible en tu versión de windows (que será la 1 probablemente) y palante xD

1 1 respuesta
hda
#11Fyn4r:

Para lo que quieres te diría que no te molestes, que instales el que tengas disponible en tu versión de windows (que será la 1 probablemente) y palante xD

Tarde, ya que me meto... hasta la médula.

hda

Pues se va avanzando. Ya tengo la distro corriendo (esto de WSL es la leche, creo me lo pondré en mi pc personal).


Falta configurar el SSH, Python, el FTP y el demonio.

1 1 respuesta
NeV3rKilL

#13 Como ya dije en el hilo de python. vscode tiene plugin para el WSL que es como estar corriendo el vscode dentro del linux de WSL. Te pilla automáticamente la consola, el python de wsl, los paquetes de wsl, todo.

Mírate samba antes que ftp. Echar a andar un servidor samba no es más complicado que echar a andar uno ftp, es más seguro que ftp y en windows lo puedes montar como una unidad sin problemas.

1 respuesta
hda

#14 lo tendré en cuenta. La historia es que no uso vscode. Solo quiero el intérprete python en el pc remoto. De hecho, con tenerlo y una vez cree el demonio ya no tengo interés en comunicarme con python. Solo quizás para algo puntual. Para eso sí estaría bien una consola python remota.

Sobre smb: el pc no estará en intranet ni en vpn, estará sobre internet en el futuro. Por eso digo "por el momento en la misma intranet."

1 respuesta
bLaKnI

Por preguntar... ¿tienes las 2 maquinas en la misma red? Es decir, ¿se ven?
Es que entonces con un simple PsExec...

#15 Ahora te leo. Pero es que si en un futuro está "en internet" como pretendes ejecutar nada? Tienes que llegar ahí. Y para hacerlo, o apificas y publicas (Flask, Django, etc...), o montas un socket que puedas publicar también contra puerto directo... Pero tendrás que realizar un montaje importante.

1 respuesta
hda

#16 ahora mismo sí, porque tengo (B) en mi intranet, pero en el futuro próximo no.

#2 tío, tengo un problema con SSH: me puedo conectar tanto desde el windows host como desde el propio linux a 127.0.0.1 y, obviamente, a localhost; pero si intento conectar mediante ip privada me da conection refused. ¿Has tenido que lidiar con ello? Llevo un rato largo ya, estoy hasta las narices.

Muestra desde el propio linux:

1 respuesta
Fyn4r

#17 Te lo está capando el firewall de windows 100%

1 respuesta
hda

#18

1 respuesta
Fyn4r

#19 :psyduck: :psyduck: :psyduck:

me acabas de matar

1 respuesta
hda

#20 llevo muerto 2 horas. Estoy empezando a desesperarme xDDDDDDDDD

:sweat_smile: :sweat_smile: :sweat_smile: :sweat_smile: :sweat_smile: :sweat_smile: :sweat_smile: :sweat_smile: :sweat_smile: :sweat_smile: :sweat_smile:

Vamos, he cogido iptables y ufw y los he desinstalado directamente. Tampoco.

hda

Por lo visto no soy el primero que se enfrenta a este problema. Aquí os dejo algún enlace que encontré hace rato ya. No me ha servido:

https://github.com/microsoft/WSL/issues/5131

this is actually a network "behavior" on Windows side. Your issue is that the port 2222 (or any ports from WSL->Windows actually) are bound to 127.0.0.1 on Windows side instead of 0.0.0.0 or your Windows IP address.

1 respuesta
Fyn4r

#22 Es que ni idea, esta entrada es antigua
https://www.reddit.com/r/bashonubuntuonwindows/comments/5gh4c8/ssh_to_bash_on_wsl/

pero tiene bastantes cosas a mirar. Yo te digo que personalmente he accedido a SSH por puerto 22, servidores web en puerto 80, 5000, 8000, etc. y nunca tuve problemas xD

HeXaN

Tardas menos en montar una máquina virtual o Docker.

Kaledros

#9 Pregunta de n00b: ¿esto para qué sirve? Por lo que entiendo es una capa que te permite correr binarios de Linux, pero no acabo de ver para qué puede ser útil. ¿O hace algo más que no he visto?

1 respuesta
hda

Lo puto he conseguido. He vuelto a revisar bien el enlace que pongo en #22

En efecto, ese es el problema, WLS mapea todas las conexiones del linux al 127.0.0.1. Así que no había manera de conectar desde IP privada.

Solución:

netsh interface portproxy add v4tov4 listenaddress=$env:MainIP listenport=2222 connectaddress=localhost connectport=2222

Conectado desde un ordenador de mi intranet

Perfecto, cuando el PC esté en inet ya crearé la regla en el router.

Una cosilla importante es que esta línea no es persistente, tengo que crear una tarea en windows para que se inicie con el ordenador. Por cierto, tuve que crear una tarea al arrancar el ordenador para que lanzase el servicio ssh en el linux automáticamente. Siguiendo estos pasos pero usando como argumento

-c "sudo /etc/init.d/ssh start"
1
Fyn4r

#25 Tú mismo te respondes, correr binarios de linux, yo es que sin bash no sé vivir xD

1 respuesta
Kaledros

#27 ¿Pero puedes usar esos comandos sobre Windows? Con el MobaXTerm puedes irte a C:\ y hacer un ls para que te liste los ficheros, por ejemplo, pero no puedes hacer un "sudo nano" en un fichero de texto porque no te lo reconoce. ¿Eso lo puedes hacer con WSL?

1 respuesta
Fyn4r

#28 Si, es un kernel totalmente funcional, eso es lo bonito

1 respuesta
hda

Si es que lo más sencillo hubiese sido lo que indica #5 y pista.

1 respuesta