Mono.
Despues de revisar varias librerias tipo dotnettelnet, me decante por Minimalistic Telnet, basicamente por que se adaptaba mas a mis necesidades y se ve mucho mas claro lo que pretendemos hacer a nivel de aprendizaje.
Receta facil, facil, facil, utilizando dos simples funciones podremos trabajar contra nuestro servidor
Primero agregamos a nuestro proyecto el fichero Minimalistic Telnet, y creamos el par de funciones, la primera es meramente para establecer la conexion, siendo los pasos necesarios conectar, y autenticarse ( txtDebug es un componente TextBox para poder ver los resultados ):
private void ConectToServer (string ip, string login, string password, int port, int timeout) {
try {
txtDebug.Text += “Conectando con " + ip + “:” + port + “… “;
//Conectar al servidor telnet tc = new TelnetConnection(ip, port);
//Nos logueamos en el servidor txtDebug.Text + = tc.Login(login, password, timeout);
// Comprobamos el simbolo del prompt para asegurarnos logueo, “$” , “#” o “>”, cada servidor nos pondra el que el desee string prompt = s.TrimEnd(); txtDebug.Text += s; prompt = s.Substring(prompt.Length - 1, 1);
if (prompt != “$” && prompt != “>” && prompt != “#”)
//Podremos lanzar excepcion new Exception(“Connection failed”) o bien mostrarlo por pantalla; txtDebug.Text += “Connection failed”;
if (tc.IsConnected) { txtDebug.Text = “Conectado !!”; }
}
catch (Exception ex) { txtDebug.Text += “Error de conexion: " + ex.Message; }
}
Una vez conectados, ya podremos enviar directamente los comandos a ejecutar con otra sencilla funcion:
private string SendTelnetData(string prompt) {
// Si esta conectado … if (tc.IsConnected) {
// enviamos el comando tc.WriteLine(prompt); prompt += tc.Read();
}
else { lblStatus.Text = “Desconectado”; }
return prompt;
}
Con las llamadas a estas dos funciones tenemos todo solucionado, por ejemplo:
ConectToServer (“192.168.1.1”, “usuario”, “contraseña”, 23, 100); SendTelnetData(“comando1”); SendTelnetData(“comando2”);
No olvidemos que para desconectar solo nos seria necesario enviar la instruccion:
SendTelnetData(“exit”);
Quien se anima a hacer la version en SSH??