LinuxParty

Ratio: 5 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio activado
 

Muchas veces nos interesa automatizar la conexión SSH o la descarga (download) o envió (upload) de un fichero/s mediante SCP en un servidor remoto del cual no tenemos acceso directo y por tanto tenemos que indicar un login y contraseña en el momento de ejecutar la conexión.

En Unix tenemos muchas formas de automatizar estos scripts (como p.ej usando expect) pero para simplificar el uso de este proceso y que pueda ser probado también por usuarios desde Windows (que me imagino les interesara bastante), hoy voy a hablar de las utilidades PSCP y PLINK incluidas en la pagina de descarga de PUTTY.

Para ello conectate a la pagina de Putty (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) y descargate los ficheros plink.exe y pscp.exe o en su defecto el paquete putty.zip (que ya lleva incluidas todas las utilidades).

plink.exe lo emplearemos para automatizar las conexiones ssh (ejecuciones de comandos), y pscp.exe para las conexiones scp (upload y descarga de ficheros).

Para ello copia estos ficheros a alguna ruta del path, o p.ej a C:/Windows/System32 con lo que ya podrás acceder a ellos directamente desde la consola de Windows.

En el caso de que uses Ubuntu, puedes instalar estos mismos comandos (plink y pscp, en este caso) si instalamos el paquete putty-tools:

(busca antes, apt-cache search putty, para Ubuntu / Debian)

(busca antes, yum search putty, para Fedora, etc...)


sudo apt-get install putty-tools

yum install putty-tools


Veamos como podemos usarlos para ejecutar un comando remoto o enviar ficheros pasando directamente el usuario y la password:

Ejemplo de uso de pscp:

pscp.exe -pw jose TUTORIAL.txt jose@127.0.0.1:/export/TUTORIALES/COMPARTIDO

Aqui p. ejemplo estoy subiendo el fichero TUTORIAL.txt (local) a la ruta remota /export/TUTORIALES/COMPARTIDO de la máquina 127.0.0.1 para el usuario jose y password jose.

Como veis la sintaxis es prácticamente idéntica a la de el comando scp. Si ejecutáis plink o pscp sin indicar nada, ya os muestra la ayudan en línea.

Ejemplo de uso de plink:

plink.exe -pw jose jose@127.0.0.1 ls -l

En este caso conecto a la maquina remota 127.0.0.1 como usuario jose, password jose y ejecuto el comando “ls -l”

También podemos escribir un script de comandos y ejecutarlo con el parámetro -m. Ejemplo:

plink -pw jose -m BACKUP.sh jose@127.0.0.1

Donde BACKUP.sh es el fichero que contiene la lista de todos los comandos que queremos ejecutar en remoto.

He escrito también una pequeña librería en Python de automatización donde empleo estas utilidades para ejecutar conexiones ssh o scp remotas desde scripting.

La librería vale tanto para Windows como Linux sin tocar nada pues ya detecta el Sistema operativo que se esta utilizando, unicamente requiere que plink.exe y

pscp.exe esten en el path de Windows o plink y pscp instalados en Linux.

La librería es una idea de algo más grande que estoy creando para hacer muchas más cosas: lectura de parámetros desde Excel. Ejecución de consultas sobre base de datos Oracle/MySQL/Sqlite.

Filtrado de ficheros, evaluación de resultados, etc…

En este caso dejo los ficheros: DEMO.py y WOLF.py, DEMO contiene un ejemplillo y en las capturas de pantalla podréis ver que se ejecuta correctamente tanto en Windows como en Linux.

Nota: Si usáis Windows y necesitáis un servidor SSH para vuestras pruebas locales, podéis usar MobaSSH (http://mobassh.mobatek.net/)




Wolf.py



Demo.py

Referencias: http://linux.die.net/man/1/plink | http://linux.die.net/man/1/pscp

Pin It

Comentarios   

Guest
0 # Re: Automatizar copia, envío y conexiones entre Windows, Unix y LinuxGuest 30-12-2011 11:38
Los caracteres   que salen el el script wolf.py ¿valen para algo ?
a mi me da error al ejecutarlo :

>./Demo.py
Traceback (most recent call last):
  File "./Demo.py ", line 3, in
  &nb sp; from Wolf import Wolf
  File "/home/ant onio/Web_Linux/ t104578/sql/tmp /Wolf.py", line 19
  &nb sp; def cls(self): 
  &nb sp;  &nb sp;  &nb sp;  &nb sp;  &nb sp;   ^
SyntaxError: invalid syntax


Nunca he escrito nada en Python, desconozco su sintaxis, pero parece que eso se ha colado en el articulo....
Responder | Responder con una citación | Citar
Guest
0 # Re: Automatizar copia, envío y conexiones entre Windows, Unix y LinuxGuest 31-12-2011 08:12
No estoy muy seguro, no soy experto en Python, pero para mi, que todos los </p>
  que hay en el artículo sobran, y hay</p>  ; en Wolf.py en detrás de la función:
   def cls(self):

(No lo sé, prueba a ver...)
Responder | Responder con una citación | Citar

Escribir un comentario


Código de seguridad
Refescar



Redes:



 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Filtro por Categorías

Nos obligan a moslestarte con la obviedad de que este sitio utiliza Cookies. Ver política