Script para tunel SSH inverso

Muchos de los equipos a los que tengo que hacer pequeñas intervenciones o mantenimientos en el trabajo van rodando por el mundo, es decir, o son portátiles o son equipos tras routers/firewalls no controlados por mi. Así­ que tengo el problema de no poderme conectar por SSH a (supongamos) un portátil de un gerente que anda en algún hotel del mundo usando a saber que conexión a internet.

La opción más rápida era montar un script que hiciese un tunel ssh inverso hacia «mi máquina» y a partir de ahí­ tener acceso completo a cualquier equipo fuera de mis dominios de BOFH.

Pero para entenderlo mejor, voy a poner un caso práctico. Tenemos un amigo que se ha puesto una KUBUNTU. Nos llama para decirnos que no sabe como instalarse un programa, como es normal, no tenemos acceso SSH al equipo de nuestro amigo, por que no tiene ni idea de configurarse un NAT en su router, así­ que le enviamos el siguiente script por mail:


#!/bin/bash
# Script para hacer tunel ssh inverso
# Por David Martí­n :: Suki_ ::
# http://sukiweb.net

USUARIO_TUNEL="remoto"
PUERTO_TUNEL="22222"

SERVIDOR_REMOTO="servidor.remoto.com"
PUERTO_SERVIDOR_REMOTO="22"

TEXTO="echo ' ADMINISTRACIí“N REMOTA';
echo 'Se va a proceder a la conexión remota de este equipo con el servidor:';
echo $SERVIDOR_REMOTO;
echo;
echo 'Mantenga esta ventana abierta mientras desee mantener la conexión.';
echo;
echo 'Teclee a continuación la clave del usuario $USUARIO_TUNEL.';
echo;
echo"

TUNEL="ssh -l $USUARIO_TUNEL -R $PUERTO_TUNEL:localhost:$PUERTO_SERVIDOR_REMOTO -N $SERVIDOR_REMOTO"

xterm -title "Administración Remota" -e "$TEXTO;$TUNEL"

En nuestra máquina, creamos un usuario llamado «remoto» con una clave que luego le daremos a nuestro amigo. Vamos a suponer que nuestra máquina es accesible desde internet a través del dominio servidor.remoto.com (aunque también puedes usar tu IP pública) y que tienes el servidor SSH a la escucha en el puerto 22.

Bien, le dices a nuestro amigo que ejecute ese script (recuerda explicarle como darle permisos de ejecución) y le aparecerá una ventana como esta en su escritorio:

tunel_SSH_inverso

Le decimos que teclee el password que hemos asignado al usuario remoto y que mantenga esa ventana abierta. En este momento, nosotros nos vamos a nuestra consola y hacemos un ssh al puerto 22222 de nuestra máquina, con el usuario de nuestro amigo, algo como:

:~$ ssh -p 22222 amigo@localhost

Nuestro amigo nos da su password (o el de otro usuario de su máquina) y ya estamos dentro. De esta forma, podemos instalarle la aplicación que querí­a o lo que sea necesario.

El script se puede mejorar mucho, aunque es lo suficientemente funcional como para utilizarlo en estos casos. Yo de momento lo voy a ir utilizando con todas esas máquinas GNU/Linux que andan sueltas por el mundo fuera de mis dominios de BOFH. :P

Realismo en BolsaPHP

Acabo de aplicar unos cambios importantes en BolsaPHP que van a cambiar muchas cosas.

Por un lado, ahora al ordenar alguna operación sobre cualquier valor, podrás ver una pequeña caja con tus órdenes en la página del valor en cuestión.

Por ejemplo, yo he realizado algunas órdenes (ficticias) en SNIACE y puedo ver algo así­:

Bolsaphp-ordenes1

De esta forma en todo momento sabremos que órdenes hemos mandado del valor que estamos viendo. Además, no se podrán tener más de tres órdenes de compra y otras tres de venta por ticker pendientes.

Por otro lado, el más importante, es que gracias a los comentarios de unos y de otros, ya sea a través de email, comentarios en esta web o por conversaciones ví­a jabber, he podido implementar un sistema de dificultad de compra / venta que simula la realidad a la hora de comprar y vender los valores.

Resulta que era demasiado sencillo hacerse rico en BolsaPHP jugando con algunos valores que se mueven en precios muy bajos, como Jazztel, que tiene tendencia a dibujar en la gráfica esos altos y bajos tan frecuentes.

En cambio, en la realidad, es bastante complicado aprovechar esos picos y obtener tantos beneficios como obtienen algunos, sólo hay que ver el ranking para darse cuenta.

Pues bueno. Ahora mismo he puesto en marcha un sistema que hace que sea más complicado comprar y vender los valores, dependiendo sobre todo del precio actual del valor y el precio al que quieras comprarlo o venderlo.

Me explico. Si quieres comprar acciones de IBERDROLA a 32,34 € y su valor actual es de 32,34 €, obtendrás más dificultad para adquirirlas que si quieres comprarlas a 33,00 €, claro que también arriesgas ese margen bajo tú responsabilidad.

Como explico en Orden limitada en precio, en el caso de querer comprar acciones con un lí­mite de precio de 33,00 € se comprarán a precio de mercado siempre y cuando no estén por encima de ese lí­mite marcado. Disculpad por la confusión.

Es decir, que ahora va a ser bastante más complicado (con la intención de que sea lo más realista posible) comprar valores, sobre todo los más económicos, de forma inmediata. Que nadie se extrañe si las órdenes no se cumplen de inmediato, a pesar de que vea que el valor ha llegado a lo que él esperaba, ya que es precisamente esto lo que hace que parezca a la realidad.

Espero que os guste el cambio, ya que aporta complicación y realismo a ser «condenadamente rico» en los Rankigs.

Mapas de Google Maps sencillos.

Hoy he visto en los RSS que anieto2k comentaba algo sobre Phoogle. Me ha dado por bajarme el pequeño código de la web de Phoogle y he visto que estaba bien la cosa, era sencillito de manejar.

Lo que pasa es que, como ahora estoy con el GPS bluetooth nuevo muy entretenido, he pensado que le faltaba una herramienta para poder usar los paseos que me doy con el GPS en marcha y pasarlos de forma sencilla a un mapa en la web.

Pues bien, me he puesto a programar un poco (que ultimamente programo poco en el curro y me apetece) y he implementado un sistema bastante sencillo para mostrar rutas, obtener posiciones geográficas y alguna cosilla más.

He tenido que modificar bastante el código de Phoogle, así­ que publico directamente aquí­ mi versión, ya que no creo que el autor quiera implementar según que cosas.

Vamos a por los ejemplos, que es lo que interesa.

Enlaces simples:

En estos enlaces simples, podemos pasarle en la url la latitud y la longitud de lo que queremos ver. Si arrastramos el mapa en cualquier momento, obtendremos la información de la latitud y la longitud que estamos viendo en ese momento. Además, tenemos un «Enlaza este sitio» muy cómo para usar el «copiar / pegar».

Enlaces con puntos marcados
Se pueden marcar puntos en el mapa de una forma muy sencilla, el código serí­a algo como esto:

$myPhoogleMap->addGeoPoint("39.836","3.169","Texto HTML de ejemplo");

Por ejemplo:

Metiendo rutas
Vamos a lo interesante. Esto es una de las cosas que más me apetecí­a. Meter de forma sencilla las coordenadas que me da el GPS (cuando he guardado un paseo) y poder mostrarlas de forma sencilla en pantalla.

Un paseo corto serí­a algo como:

$myPhoogleMap->addTrack("0000CC");
$myPhoogleMap->addPolyline("39.839172093", "3.164405822753");
$myPhoogleMap->addPolyline("39.8392050453", "3.16515684127");
$myPhoogleMap->addPolyline("39.839172093", "3.16586494445");
$myPhoogleMap->addPolyline("39.840803215", "3.16816091537");
$myPhoogleMap->addPolyline("39.84108330349", "3.167967796325");

Pero además, como este paseo es cerca de la playa, queda más bonito usar las imágenes de satélite y con el zoom al máximo, así­ que añadimos:

$myPhoogleMap->zoomLevel=1;
$myPhoogleMap->MapType ="G_HYBRID_TYPE";

La cosa quedarí­a más o menos así­ (con una foto incluida).

Y bueno, algo que también me parecí­a bastante interesante era poder tener varias rutas en pantalla, así­ que me puse manos a la obra y queda igual de sencillo. Además, se le elige el color que quieres a cada trazada.

Pues bien, para ponerlo en marcha en tu web, personalizandolo a tu gusto, te lo he puesto muy fácil. Simplemente descargate estos dos ficheros:

Añade tu API KEY de google maps y ya puedes empezar a meter tus apuntes, fotos, rutas o paseos. :)

P.D.: Con un poco de imaginación es sencillo enlazarlo con una base de datos o ficheros XML para poder tener una cantidad considerable de excursiones que mostrar. Pero eso lo haré otro dí­a, que ya es algo tarde y deberí­a dormir un poco. ;)

Orden limitada en precio en BolsaPHP

Acabo de implementar recientemente las órdenes de compra / venta en BolsaPHP y como sistema de orden, la orden limitada en precio.

Voy a intentar explicar, de forma lo más clara y sencilla que pueda, que es esto de las órdenes de compra y en concreto la orden limitada en precio. Los más expertos tendréis que perdonarme si digo alguna barbaridad, estaré encantado de corregir y aprender de vuestras aportaciones. :)

Orden limitada en precio
Resumiendo, este tipo de orden es la que se realiza a un precio fijo indicado, ni por encima (en caso de compra) ni por debajo (en caso de venta) del valor indicado. La operación puede no llevarse a cabo, ya que pueden darse una serie de circunstancias que la condicionen.

Creo que explicándolo con un ejemplo será lo más sencillo.

Vamos a suponer que realizamos una orden limitada en precio para vender 300 tí­tulos de BBVA a 18.30 €. Una vez realizado, pueden ocurrir varias cosas.

  • Que nadie esté interesado en la compra de BBVA a 18.30 € ni superior, por lo que la orden quedará pendiente hasta que esto ocurra.
  • Que sólo se vendan una parte de las acciones, por ejemplo 105 tí­tulos a 18.30 € y 50 a 18.32 € (pero nunca por debajo de 18.30 €).
  • Que se vendan todas las acciones por el precio establecido o superior.

En el supuesto de compra es exactamente igual. Supongamos que queremos comprar 260 tí­tulos de Acerinox a 21.77 € y lanzamos la orden limitada en precio, entonces puede que:

  • Nadie esté dispuesto a vender acciones de Acerinox a 21.77 € ni por debajo de este precio, así­ que quedará la orden en espera de que surja algún vendedor con estas condiciones.
  • Sólo 130 tí­tulos están por debajo de 21.77, por lo que compramos 100 a 21,75 € y 30 a 21.77 €, mientras que el resto sigue en la cola de órdenes hasta que nuevos vendedores ofrezcan su oferta.
  • Que compremos todos los tí­tulos solicitados al precio solicitado.

En cualquier caso, las órdenes se quedan almacenadas y en vigor hasta finalizar el dí­a.

¿Sencillo no?. Hay otros tipos de órdenes, que procuraré ir implementando en al medida de lo posible (y con todo el realismo posible) en BolsaPHP. Pero de momento sólo está implementada esta y todaví­a no está 100% funcional.

Pero vamos, lo mejor es probarlo. Realizar compras y ventas para luego observar la cola de órdenes y será sencillo hacerse a la idea. :)