Archivo de la categoría: ssh

Conectar a un Django shell_plus remoto

¡Acabo de utilizar la cabeza para algo! Todavía estoy emocionado. Creo que esto va a facilitarle las cosas a varios y a reducir ese tiempo tedioso de conectarse al servidor «para probar algo» o «ver qué tiene la db» o etc.

La cosa es así, ¿cuántas veces nos logueamos por ssh al servidor para luego hacer Ctrl + R, empezar a tipear shell_plus y darle Enter (si es que todavía quedó en el history y lo tipeamos con el path absoluto) sino hacer cd hasta la carpeta dónde tenemos el proyecto de Django y finalmente ejecutar ./manage.py shell_plus con una previa activación del virtualenv.

Wow! Suena tedioso hasta tener que explicarlo. Hoy traigo la solución. «Waaaa, tengo miedo nene»

Es simple, seguimos utilizando SSH pero evitamos todos los pasos antes dichos con sólo un comando:

ssh user@remote-host.com -t -C «source ~/path/to/virtualenv/bin/activate && python ~/path/to/django/project/manage.py shell_plus»

La opción -C es para que comprima la entrada y la salida y la -t es para que se vean bien los colores de la salida de ipython en mi caso (ya que lo tengo instalado).

Me zarpé! 😀

Hosting nuevo – Vida nueva

¡Mission acomplished! Hace un rato que termino de mudarme. No está demás decir que en PyAr (Python Argentina) hay gente que tiene muy buena onda con la respuesta de los mails que uno manda a la lista. Pero además, tienen buena onda en otros sentido también.

A través del canal de irc de pyar (#pyar en freenode.net) conocí a StyXman (o StucKman); que quitando el problema de doble personalidad que tiene, es uno a los que hago referencia arriba.

Muy sutilmente, hace un par de días (dos exactamente 😛 ) me ofreció hosting en su servidor casero. Le dije que lo iba a pensar y que era mejor que lo charlemos por mails, ya que yo tenía demasiadas dudas al respecto. ¿Cómo era el servicio? ¿Qué tengo que hacer? ¿Cuanto tengo de subida? ¿Cuanto de bajada? Que sé yo, una cantidad de preguntas que creo que cualquier persona que va a un hosting algo bastante distinto a lo que es Google, tiene en su cabeza.

Bueno, después de un par de mails de idas y vuelvas, nos pusimos de acuerdo. Arreglamos para empezar a hacer las cosas hoy (ya ayer) por la tarde. Enseguida me creó una cuenta para poder acceder por ssh, si bien yo tengo conocimiento sobre esto, tuve que recurrir a mis artículos anteriores sobre este comando, para refrescar algunos conceptos.

Bajé todos los repositorios de Google, como comenté en mi post anterior. Pero al final tuve que modificar algunas cosas en esta mudanza. Cuando bajé los repositorios de google lo hice con el comando:

$ svk mirror //local http://<proyecto>.googlecode.com/svn/

Lo cual me dí cuenta que está mal. Porque esto te crea una carpeta local en el repositorio y dentro de ella te manda todas las otras (trunk, branches, tags). Entonces a la hora de hacer el svnadmin load me quedaban carpetas indeseadas. Asique busqué un rato, y me dí cuenta que el error era el //local pero en casi todos los ejemplos que ví en internet estaba así y no explicaba mucho el porqué. Por lo que yo lo dejaba así cayadito.

Lo que hice en un principio fue bajar todos los repositorios de google a mi máquina, para luego subirlos por ssh al servidor. Después me avivé y me dije: ¿Porqué no ejecutar mi script de Python que me baja todos los proyectos en el servidor? Ya sabía que tenía Python en el servidor asique iba a funcionar, lo único es que me faltaba el comando svk, pero enviando un sólo mensaje al administrador del servidor en pocos minutos tenía lo que necesitaba instalado.

Bueno la cuestión es que después de un par de horas tenía todo andando en el servidor mal llamado mio. En cuanto al llamado por StyXman hacia mi persona como «iluso», no tiene idea de lo que está diciendo. En el mismísimo momento en el que se fue a dormir, busqué todas las pass del sistema y empecé a cambiar todo tipo de configuraciones de la máquina adaptándola a mis necesidades. Ja! En realidad todavía no sé ni como cambiar la clave que me dió por defecto de mi cuenta de usuario 😦 . Ya veremos, todo se aprende… tampoco busqué.

«Asique bueno», diria alguna persona que conozco. En cuanto tenga todo bien configurado se los comunico a mis amigos co-desarrolladores de algunos proyectos para empezar a meterles pilas a este repositorio.

Me gustan varias cosas de esto. Para empezar sé como están funcionando algunas cosas ahí, y soy mi propio administrador de los repositorios, osea, no dependo de google si quiero borrar el repositorio a la mierda cuando quiero (hace un par de semanas hice un «Delete proyect» en google y todavía está ahí 😦 ), hacer mis backups, subir cosas, bajar cosas… que sé yo. Por lo menos hasta que me reten, me echen o pase algo. Por algo dicen que no todo es color de rosas, pero esto pinta bastante bien.

Vamos a ver cómo se va desarrollando con el tiempo esto, espero no tener ningún problema y no complicarle la vida a StyXman, o a su alma gemela StucKman, haciendo cagadas…

Conexión remota por SSH

SSH es un protocolo que nos permite conectarnos a un equipo de forma remota mediante una red LAN / WAN. Permite manejar por completo la computadora, de manera que todo lo que ejecutemos se hará sobre ésta computadora (a la que estamos accediendo de forma remota) y se visualizará en la que estamos localmente. Por ejemplo si ejecuto el comando:

$ ogg123 «The Crazy – This is a breakfast.ogg»

El sonido de la reproducción de este archivo de audio saldrá por los parlantes que posea la máquina remota, quizás nosotros ni escuchemos este sonido debido a la distancia en la que nos encontramos.

Mediante este protocolo se pueden copiar archivos, visualizar contenido de éstos, actualizar el sistema, reiniciar el pc, y muchas cosas más. Para la conexión mediante SSH se necesita tener la máquina encendida 😛 y además que se encuentre corriendo el demonio servidor de SSH.

Necesitamos instalar el paquete ssh en Ubuntu, el cuál nos instala el cliente de ssh y el servidor ssh. Una vez instalado esto podemos verificar que se esté ejecutando con el comando:

$ ps -ef | grep sshd
root 29080 1 0 12:09 ? 00:00:00 /usr/sbin/sshd
manuel 29154 29087 0 12:11 pts/4 00:00:00 grep sshd

La primer línea nos indica que el demonio esta activo. Se pueden configurar varias opciones del servidor de SSH editando el archivo /etc/ssh/sshd_config, por ejemplo para cambiar el puerto por el cuál trabaja. Yo tuve que utilizar esta opción ya que en la facultad tienen bloqueado el puerto por defecto (puerto 22).

Podemos loguearnos de forma remota en nuestro equipo utilizando cualquiera de las cuentas de usuario que tengamos creadas en el sistema. Yo por ejemplo tengo una únicamente «manuel». Tenemos varias formas de hacerlo:

SSH desde un sistema Linux:

La manera más sencilla de hacerlo es, si estamos en un entorno gráfico abrimos una consola y tipeamos:

$ ssh usuario_remoto@ip_remota

Por ejemplo, desde la otra PC que tengo en red:

$ ssh manuel@10.0.0.5
manuel@10.0.0.5’s password:

SSH desde un sistema Linux con MC:

De esta forma podemos tener en la vista izquierda nuestra PC local y en la derecha la máquina remota, por lo que podemos ejecutar todas las opciones que nos permite el MC. Entre ellas, copiar, cortar, editar, etc…

Desde una consola tipeamos mc, lo que nos abre el Midnight Commander, vamos a la configuración de la vista derecha, por ejemplo, con la tecla rápida F9 y elegimos «conexión por sHell»Luego en la ventanita que se abre escribimos algo similar a lo q

ue tipeamos anteriormente en la consola, con la direfencia que tenemos que anteponer /#sh: seguido de lo mencionado arriba.

Finalmente nos pide el password y una vez ingresado de forma correcta nos permite explorar los directorios de la máquina de remota.

SSH desde un sistema Windows:

Para esto necesitamos un programita pequeño pero muy eficaz llamado PuTTY, el cuál es libre y se puede descargar su ejecutable desde aquí. No necesita ser instalado ni mucho menos, sólo doble click y listo.

Los screenshots de el programa PuTTY son de Linux emulado con Wine, ya que no tengo Windows en esta computadora.

Una vez que abrimos el PuTTY nos muestra la pantalla de configuración, en la que ingresamos el IP de la máquina remota y le damos «Open».

Algunos Tips:

  • Programas gráficos, si le pasamos el parámetro -X al comando ssh este nos visualizará la parte gráfica en la computadora local. Lo he probado con pocas aplicaciones y funcionó, por ejemplo el juego Twisted Zombie, se ve un poco lento mediante SSH. Pero quizás para visualizar fotos y demás sea muy útil ya que podemos usar todos los programas que tenemos instalados en la máquina remota. Ejemplo:

$ ssh -X manuel@10.0.0.5

Ahora cuando ejecutemos cualquier comando que requiera interfaz gráfica, lo visualizaremos correctamente en la PC en que nos encontramos físicamente.

  • Copia de archivos, podemos copiar archivos desde el equipo remoto hacia el local y viceversa utilizando los siguientes comando respectivamente:

$ scp usuario@ip_remota:archivo_remoto archivo_local
$ scp
archivo_local usuario@ip_remota:archivo_remoto