post icon

Ejecutar Comandos SSH y transferir ficheros por SCP desde C#

Ya vimos en una entrega anterior como ejecutar comandos Shell (SSH) con Java, en ésta oportunidad le tocará a C#, básicamente la aplicación podrá hacer lo mismo que hace el ejemplo anterior, la unica diferencia es lo más obvio, el lenguaje en que fue escrito :P.

Para lograr esto en C# necesitaremos descargarnos la librería opensource Tamir | Gal el mismo nos servirá para realizar varias tareas, ejecutar comandos SSH y copiar ficheros por SCP. Una vez descargado agregamos las .dll a las referencias del proyecto, haciendo click derecho sobre references –>Agregar referencias.. –> Examinar –> Tamir.SharpSSH.dll. (Para este paso buscamos el directorio donde hemos descargado el archivo).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
using Tamir.SharpSsh;<span id="more-720"></span>
 
private void EjecutarSSH(string pServidor, string pUsuario, string pPassword, string pComando)
{
	SshStream SSH = null;
	try
        {
		// instancia del objeto SSHShell
                SSH = new SshStream(pServidor, pUsuario, pPassword);
		// ejecutar el comando
		SSH.Write(pComando);
		// confirmar
		SSH.flush();
	}
	catch (Exception ex) 
	        { throw ex; }
	finally 
	{ 
		//cerrar conexion SSH
                SSH.Close();
	}  // end try
} // end EjecutarSHH
 
private void BajarSCP(string pServidor, string pUsuario, string pPassword, string pFileRemoto, string pFileLocal)
{
	// instancia del objeto SCP
	Scp SCP = new SshStream(pServidor, pUsuario, pPassword);
	try
        {
		// crear conexion SSH
                SCP.Connect();
		// Bajar el archivo
                SCP.From(pFileRemoto, pFileLocal, false);
	}
	catch (Exception ex) 
	       { throw ex; }
	finally 
	{ 
		//cerrar conexion SCP
                SCP.Close();
	}  // end try
} // end BajarSCP
 
private void SubirSCP(string pServidor, string pUsuario, string pPassword, string pFileRemoto, string pFileLocal)
{
	// instancia del objeto SCP
	Scp SCP = new SshStream(pServidor, pUsuario, pPassword);
	try
        {
		// crear conexion SSH
               SCP.Connect();
		// Subir el archivo
                SCP.To(pFileLocal, pFileRemoto, false);
	}
	catch (Exception ex) 
	       { throw ex; }
	finally 
	{ 
		//cerrar conexion SCP
                SCP.Close();
	}  // end try
} // end SubirSCP

Comentarios desde Facebook:

  1. avatar
    Angel MEXICO Google Chrome Windows
    20 septiembre 2013 at 13:46 #

    Gracias por el aporte me sirvio de ayuda!

  2. avatar
    Hosdh UNITED STATES Google Chrome Windows
    14 mayo 2013 at 04:51 #

    Buenas, esta mal la parte de subir y bajar archivos Scp, en vez de esto:

    Scp SCP = new SshStream(pServidor, pUsuario, pPassword);

    Usar:

    Scp SCP = new Scp(pServidor, pUsuario, pPassword);

  3. avatar
    hreyes MEXICO Opera Windows
    4 junio 2011 at 01:16 #

    Vere que tal sirve, de entrada me da una idea de como implementarlo ñ_ñ

    gracias por ejemplo

  4. avatar
    Marcelo ARGENTINA Google Chrome Windows
    1 marzo 2011 at 12:00 #

    Tengo que realizar un servidor SFTP, pero no encuentro nada de esto en internet ni en VB , C# o Delphi, podrian darme una mano con eso?

    Atte. Marcelo

Responder