LinuxParty
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
-
Unix
- La versión 256 de systemd cuenta con un '42% menos de filosofía Unix'
- Recordando los escritorios Unix y lo que podemos aprender de ellos
- Los historiadores informáticos descifran las contraseñas de los primeros pioneros de Unix
- UNIX vs Linux: todo lo que necesitas saber
- Comprobar la sintaxis de los archivos de configuración *más comunes* en Unix / Linux.
- fuser y lsof, sistema de archivos y procesos activo utilizandolos.
- Descripción de los modernos sistemas de escritorio del UNIX de lujo.
- Squirrel Shell, la Shell de todos los sistemas !! ( Windows, Unix, Linux y Mac )
- UNIXem, Emulador Unix / Linux en Windows
- Siete hábitos altamente eficaces para Administradores Unix y Linux
- Capturas de pantalla en equipos remotos Unix y Linux.
- Automatizar copia, envío y conexiones entre Windows, Unix y Linux
- El padre de C y Unix, Dennis Ritchie, ha fallecido, D.E.P.
- ¿Por qué usted no debe reiniciar los servidores Unix / Linux?
- Rasgos comunes de los Veteranos Administradores de Unix
Comentarios
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....
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...)