Archivos para 31 diciembre 2011

Feliz 2012

Spartacus: Vengeance – Trailer

Full Circle #56

This month:
* Command and Conquer.
* How-To : Make 11.10 Look ‘Classic’, LibreOffice – Part 10, Backup Strategy – Part 4, Persistent USB Stick, and Connect To IRC.
* Linux Lab – Xbox Media Centre.
* Review – Puppy Linux.
* I Think – Would you attend a monthly FCM meeting on IRC?
* Closing Windows – Moving, copying & deleting files
plus: more Ubuntu Games, My Desktop (and an extra!), My Opinion, My Story, and much much more!

Descarga | Full Circle

Cita

Todo lo bonito que me ha pasado en la vida, lo he acabado estropeando o en otro caso se ha roto sin que yo tuviera la culpa. Debe ser, mi maldición…

(365 Dias de Soledad)

Ubuntu Tweak 0.6.0 disponible

Ya podemos instalar Ubuntu Tweak 0.6.0, la genial herramienta para configurar muchos aspectos de nuestro sistema.

sudo add-apt-repository ppa:ubuntu-tweak-testing/ppa
sudo apt-get update
sudo apt-get install ubuntu-tweak

Enlace | Descarga

Prometheus – Official Trailer Spot #1

Via | Primer teaser de Prometheus, la vuelta de Ridley Scott al universo Alien

El Hobbit: Un viaje inesperado – Trailer

Via | Tierra de Cinefagos

Automatizando las conexiones ssh y scp con PLINK y PSCP (Windows y Unix)

Muchas veces nos interesa automatizar la conexion SSH o la descarga (download) o envio (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 conexion.

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 tambien 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 insalar estos mismos comandos (plink y pscp, en este caso) si instalamos el paquete putty-tools:

sudo apt-get 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 maquina 127.0.0.1 para el usuario jose y password jose.

Como veis la sintaxis es practicamente identica a la de el comando scp. Si ejecutais plink o pscp sin indicar nada, ya os muestra la ayudan en linea.

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”

Tambien podemos escribir un script de comandos y ejecutarlo con el parametro -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 tambien una pequeña libreria en Python de automatización donde empleo estas utilidades para ejecutar conexiones ssh o scp remotas desde scripting.

La libreria 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 libreria es una idea de algo más grande que estoy creando para hacer muchas más cosas: lectura de parametros desde Excel. Ejecucion de consultas sobre base de datos Oracle/MySQL/Sqlite.

Filtrado de ficheros, evaluacion de resultados, etc…

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

Nota: Si usais Windows y necesitais un servidor SSH para vuestras pruebas locales, podeis usar MobaSSH (http://mobassh.mobatek.net/)

WOLF.py

#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
Wolf: Libreria de Automatizacion
Version 1.0 - Creada en Diciembre 2011
@author: lobo
Nota: Iremos ampliando poco a poco sus funciones
Version 1.0 
- Soporte de SCP y SSH mediante las utilidades plink.exe y pscp.exe en Windows o plink y pscp (putty-tools) en Linux
'''
from subprocess import call
from platform import system
import os
class Wolf(object):
    '''
    Limpia la pantalla  
    '''  
    def cls(self):</p>
         os = system()  
        if os == 'Linux':  
            call('clear', shell = True)  
        elif os == 'Windows':  
            call('cls', shell = True)</p>
     '''  
    Crea una variable de entorno  
    '''  
    def export(self,key,value):  
        if (value==None):  
            value="-"  
        os.environ[key]=value  
        print("export "+key+"="+value)</p>
     '''  
    Crea un fichero con el contenido indicado, Expande las variables de entorno.  
    '''  
    def mensaje(self,contenido,fpath):  
        try:  
            f=open(fpath,"wb")  
            contenido=os.path.expandvars(contenido)  
            contenido=os.path.expandvars(contenido)  
            f.write(contenido)  
            f.close()  
            print(fpath+" generado.")  
        except Exception,err:  
            print("Error: "+str(err))</p>
     '''  
    Ejecuta comandos remoto mediante SSH  
    '''  
    def ssh(self,host,user,password,cmds):  
        PLINK_STRING="plink"  
        so = system()  
        if so == 'Linux':  
            PLINK_STRING="plink"  
        elif so == 'Windows':  
            PLINK_STRING="plink.exe"</p>
         #cmds=os.path.expandvars(cmds)  
        #cmds=os.path.expandvars(cmds)</p>
         comando=PLINK_STRING+" "+"-pw "+password+" "+user+"@"+host+" "+cmds  
        print("debug: "+comando)  
        try:  
            os.system(comando)  
        except Exception,err:  
            print("Error: "+str(err))</p>
     '''  
    Ejecuta en remoto el contenido del script indicado  
    '''  
    def sshScript(self,host,user,password,script,fOut=None):  
        PLINK_STRING="plink"  
        so = system()  
        if so == 'Linux':  
            PLINK_STRING="plink"  
        elif so == 'Windows':  
            PLINK_STRING="plink.exe"</p>
         #cmds=os.path.expandvars(cmds)  
        #cmds=os.path.expandvars(cmds)</p>
         comando=PLINK_STRING+" "+"-pw "+password+" -m "+script+" "+user+"@"+host+" "  
        print("debug: "+comando)  
        try:</p>
             stdout = os.popen(comando)  
            OUT=stdout.read()  
            print (OUT)  
            if (fOut!=None):  
                f=open(fOut,"wb")  
                f.write(OUT)  
                f.close()</p>
         except Exception,err:  
            print("Error: "+str(err))</p>
     '''  
    Sube un fichero a remoto  
    '''  
    def upload(self,host,user,password,localfile,remotefile):  
        PSCP_STRING="pscp"  
        so = system()  
        if so == 'Linux':  
            PSCP_STRING="pscp"  
        elif so == 'Windows':  
            PSCP_STRING="pscp.exe"  
        localfile=os.path.expandvars(localfile)  
        localfile=os.path.expandvars(localfile)  
        remotefile=os.path.expandvars(remotefile)  
        remotefile=os.path.expandvars(remotefile)  
        comando=PSCP_STRING+" "+"-pw "+password+" "+localfile+" "+user+"@"+host+":"+remotefile  
        print("debug: "+comando)  
        try:  
            os.system(comando)  
        except Exception,err:  
            print("Error: "+str(err))</p>
     '''  
    Descarga un fichero remoto  
    '''  
    def download(self,host,user,password,remotefile,localfile):  
        PSCP_STRING="pscp"  
        so = system()  
        if so == 'Linux':  
            PSCP_STRING="pscp"  
        elif so == 'Windows':  
            PSCP_STRING="pscp.exe"  
        localfile=os.path.expandvars(localfile)  
        localfile=os.path.expandvars(localfile)  
        remotefile=os.path.expandvars(remotefile)  
        remotefile=os.path.expandvars(remotefile)  
        comando=PSCP_STRING+" "+"-pw "+password+" "+user+"@"+host+":"+remotefile+" "+localfile  
        print("debug: "+comando)  
        try:  
            os.system(comando)  
        except Exception,err:  
            print("Error: "+str(err))</p>
     '''  
    Imprime un texto con expansion de variables  
    '''  
    def echo(self,string):  
        string=os.path.expandvars(string);  
        string=os.path.expandvars(string);  
        print(string)</p>
     '''  
    Constructor  
    '''  
    def __init__(self):  
        '''  
        Constructor  
        '''  
        print("Wolf: Libreria de Automatizacion v1.0")

DEMO.py

#!/usr/bin/python
# Importamos la libreria de Automatizacion
from Wolf import Wolf
# Creamos una instancia de la clase
s=Wolf()
# Indicamos los datos de Acceso a la maquina remota
host="AQUI TU HOST"
user="AQUI TU USER"
password="AQUI TU PASSWORD"
# EJEMPLO_1 : Creamos un script con los comandos a ejecutar.
s.mensaje("cd ${HOME}; cal","SCRIPT_01.sh")
# EJEMPLO_2: Ejecutamos en remoto el script anterior y guardamos sus trazas en Local (fichero TRAZAS.log)
s.sshScript(host,user,password,"SCRIPT_01.sh","TRAZAS.log")
s.echo("Mi directorio HOME es ${HOME}")
# EJEMPLO_3: Descargamos de remoto un fichero mediante pscp
s.download(host, user, password, "/tmp/SSH.log", "./SSH_recuperado.log")

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

Momentos Musicales

Wind of Change

(6 años x 365 dias de soledad, son muchos dias de soledad)

Wrath of the Titans – Official Trailer



The next version of Ubuntu is coming soon


¿Es compatible tu equipo con Ubuntu?


( Muchos fondos de pantalla, aqui )

DESCARGATE SCIFI LIFE

365 Dias de Soledad
Me debes los sueños, las promesas y las noches rotas. Me debes la paz, la sonrisa y la esperanza robadas. Me debes la sangre, las lágrimas y el sudor vertido. Me debes las noches vacías, los abrazos anhelados. Me debes un beso de ajenjo de tu amarga boca.

The Ubuntu Counter Project - user number # 11961
Geo Visitors Map
diciembre 2011
L M X J V S D
« nov   ene »
 1234
567891011
12131415161718
19202122232425
262728293031  

Blog Stats

  • 26,179,238 hits

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 1.014 seguidores