Developer's Diary

30 julio, 2010

Ssh en C#

Filed under: .net, Internet, Programación, Ssh — Etiquetas: , , , , , — 3nk1 @ 8:33 AM

Durante estos días, estoy realizando un proyecto para usar algunas las funcionalidades de un dispositivo con Linux Embedded. Este debe conectarse en remoto.

Comienzo a investigar el dispositivo en cuestión, se trata de una antena Nanostation de la empresa Ubiquiti.  La posibilidad de uno de estos aparatos es infinita, podemos pensar que este tipo de dispositivos se pueden usar para infinidad de funciones. No solo debemos pensar en esto como un simple receptor Wifi. Al tener la posibildidad de modificar toda la interfaz y el firmware sin ningún tipo de impedimento.

Después de indagar en las posibilidades que me da el aparato. Paso a probar como poder comunicarme con él desde una aplicación en .Net. Como cualquier otro sistema basado en Linux, tenemos la posibilidad de comunicarnos mediante comunicación SSH. Pruebo a hacerlo por la aplicación Putty y todo está correcto, la antena me responde a la perfección y por lo tanto es la vía que veo más factible.

Por lo tanto, paso a picar código para probar. Al tratarse de una conexión en ssh, pienso que tal vez con un socket podría llegar a conectarme y recibir datos aunque fuesen cifrados. Pero para mi sorpresa, tras conectarme al host, no recibo ni un mísero byte pidiendo un usuario o una contraseña. A partir de ahí, empiezo a buscar controles especificos para la conexión mediante SSH, no encuentro nada esclarecedor, todo es de pago. Pero finalmente topo con un proyecto de sourceforge.

Desde ahí accedo a las librerias de Tamir, estas no solo permiten la conexión por SSH, si no también a ftp seguros. Estas librerias están basadas en otras de Java.

Aunque tenemos más funcionalidad de la que vamos a comentar hoy aquí. La libreria es bastante extensa y cubre todas las necesidades para este tipo de conexiones. Vamos a comentar, como abrir una consola para ssh y desde ahí ejecutar un comando. Para ello en nuestro proyecto, no se nos debe olvidar introducir la referencia.

El programa iria de la siguiente manera, creamos un objeto de SshExec.  Este nos pide los datos de host y usuario, además de poder introducir también la contraseña. Posteriormente solo debemos llamar al método RunCommand, con el comando igual que si lo llamaramos desde una consola de linux o una sesión de Ssh.  El resultado de ese comando es recibido y puede ser recogido en un string, pudiendo hacer con él, lo que necesitemos.

Aquí dejo un ejemplo de código para hacer lo arriba expuesto.

namespace PruebaSshConsola
{
class Program
{
static void Main(string[] args)
{
Console.ReadKey();

Console.Write(“Introduzca host: “);

string host = Console.ReadLine();
Console.Write(“Introduzca usuario: “);
string user = Console.ReadLine();
Console.Write(“Introduzca contraseña: “);
string pass = Console.ReadLine();
string resultado = string.Empty;
SshExec ssh = new SshExec(host , user , pass);

try
{
ssh.Connect();
Console.WriteLine(“Introduzca comando”);
resultado = ssh.RunCommand(Console.ReadLine());
Console.WriteLine(“Comando ejecutado”);
}
catch
{
Console.WriteLine(“Error”);
}

Console.WriteLine(resultado);

Console.WriteLine(“Fin”);
ssh.Close();

Console.ReadKey();

}

}
}

Recordar que debeis agregar la referencia de la librería que os podeis descargar desde aquí y desde aquí podeis ver la página del creador.

Saludos!!!

Anuncios

2 comentarios »

  1. en la siguiente linea:
    string resultado = ssh.RunCommand(Console.ReadLine());

    debe decir
    resultado = ssh.RunCommand(Console.ReadLine());

    ya que la instancia ya esta creada,

    saludos

    Comentario por jonatan — 30 diciembre, 2010 @ 11:30 AM

    • Es cierto jonatan. Ya está modificado. Eso pasa por escribir código directamente en el editor del blog.

      Muchas gracias, un saludo.

      Comentario por 3nk1 — 30 diciembre, 2010 @ 3:16 PM


RSS feed for comments on this post. TrackBack URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: