Script para montar compartidos windows

19 05 2010

Desde Ubuntu (Linux) es mucho mas dificil montar archivos compartidos desde Windows y mucho mas cuando la version es Windows 7, por su nuevo sistema de compartido.

Para ello me hecho otro Script (si, otro a la lista) utilizando Python (si si me gusta Python para scripts), lo que hice fue envolver el montado del compartido pero esta vez si tener que scribir el password del usuario para conectarse a la vista de todos (eso mal, muy mal 😦 ).


#!/usr/bin/env python

import getpass, getopt, sys, os

__author__ = "Edder Rojas <edder.rojas@gmail.com"
__version__ = "0.2"

class SmbMount():

    def __init__(self, mnt_src, mnt_dest, username, password):
        self.mnt_src = mnt_src
        
        if not os.path.exists(mnt_dest):
            raise IOError("Path doesn't exist")
            
        self.mnt_dest = mnt_dest
        self.username = username
        self.password = password
        self.user = getpass.getuser()
        
    def mount(self):
        command =  "sudo smbmount " 
        command += self.mnt_src + " " 
        command += self.mnt_dest + " "
        command += "-o user=" + self.username + ","
        command += "pass=" + self.password + ","
        command += "uid=" + self.user + ","
        command += "iocharset=utf8"
        
        result = os.system(command)


if __name__ == "__main__":
    args = sys.argv
    if ( len(args) < 4 ):
        print (
                args[0].replace("./", "").split("/")[-1] + " " 
                + __version__
                + " <remote folder> <mount folder> <username>"
               )
    else:
        mnt_src = args[1]
        mnt_dest = args[2]
        username = args[3]
        password = getpass.getpass()
        smbMount = SmbMount(mnt_src, mnt_dest, username, password)
        smbMount.mount()

Basicamente hace de wrapper para smbmount y le da permisos al usuario actual para poder escribir, leer y todo el asunto. Algo a notar es que necesita el comando smbmount, además permisos de Root y por ultimo una carpeta de destino; mi conveción para esto, yo uso la carpeta /media y creo una carpeta con el mismo nombre del maquina a la que me estoy conectado y luego le doy permisos a mi usuario para usarlo:

mkdir /media/WinTarro
chown usuario.grupo /media/WinTarro

Ya con eso se podria usar el comando.

Anuncios




Script para ocultar los paneles en Gnome

18 01 2009

Creo que habia comentado que tengo una Eee PC 900, la cual es muy comoda para trabajar, además no tengo las manos muy grandes y no me es muy incomo el teclado.

El punto es que a veces la aplicaciones en Gnome las hacen un poco más grandes que mi monitor puede mostrar, a veces es por poco que no se ve completa, para ello decidí crear un script en Python que oculta el panel de arriba y de abajo (es la configuración por defecto de gnome), éste es el script:

#!/usr/bin/env python

import os

command = "gconftool-2 --set /apps/panel/toplevels/panel_1/auto_hide --type bool "
command2 = "gconftool-2 --set /apps/panel/toplevels/panel_0/auto_hide --type bool "

results = os.popen("gconftool-2 --get /apps/panel/toplevels/panel_1/auto_hide").read()
str.replace(results, "\n","")

if results == "false\n":
        os.popen(command + "1")
        os.popen(command2 + "1")
else:
        os.popen(command + "0")
        os.popen(command2 + "0")

Para saber cuales son los paneles en cuestion, porque varian de maquina en maquina si se han removido y re-agregado anteriormente, hay que abrir el gconf-editor se puede abrir pusaldo la combinación de teclas Alt+F2 y escribiendo la caja de texto gconf-editor.

Ya con la aplicación abierta hay que expandir las carpetas apps->panel->toplevels->panel0, como dije anteriormente puede variar esos nombres, una forma de saber si son esos es darle click de las carpetas de alguno de los paneles y darle click en el checkbox auto_hide si el panel llegase a ocultarse significa que ese el correcto y hay que poner el nombre en el script, se repite el mismo proceso para el otro panel ( si tuvieran uno mas).

Un tip extra, es que por defecto los paneles ocultos, se siguen mostrando una parte (6 pixeles), eso se modifica en la propiedad de nuevo de alguno de los paneles auto_hide_size, yo casi siempre lo pongo en 0, asi no se muestran del todo.





Script que te lee lo que selecciones con el mouse

18 11 2008

Algo que me sucede muy a menudo, es que si hay mucho ruido no puedo concentrarme, tengo grandes problemas para mantener la concentración, más aún si estoy leyendo, ésto se hace un gran problema cuando tengo que leer documentación o manuales, una solución que me ayuda bastante es leerlo en voz alta, el cual no se puede en un entorno de trabajo compartido, porque molestarías a los compañeros, otra solución usando sintetizadores de voces para que te lean por ti, por lo que me di la tarea de hacer una pequeña investigación al respecto, y me encontré que espeak está instalado por defecto, lo cual hace mucho más facil el desarrollo del script, en ésta pagina hay buena información al respecto.

Linux por defecto tiene dos clipboard (cuando copias se almacena ahi), uno es cuando le das copiar o cortar y otro es cuando con el mouse seleccionas un texto, éste ultimo se pega cuando das click en el botón central de mouse. Para obtener el clipboard de seleccion del mouse y tener acceso de esa información desde la consola (o script) se necesita una utilidad que está en los repositorios de Ubuntu:

sudo aptitude install xclip

y con esa utilidad tenemos el texto seleccionado que nos va alimentar a espeak, para que nos hable; el siguiente script solo habla en inglés, pero se puede modificar para hable español (lo dejo de tarea para después 😛 ), ademas si se vuelve a llamar a el script se va a detener de seguir hablando:

#!/bin/bash
VOICE=`pgrep espeak`
if [ $VOICE ]; then
        killall espeak
        exit
else
        xclip -selection primary -out | espeak
        exit
fi




Script que te recuerda la hora

8 08 2008

Me pasa bastante que programando se me van las horas volando, lo que se ocurrio para recordar que hora es, crear un script que me recuerde que hora es 😛

Primero que todo se necesita el comando notify-send que es como un popup (cuando ubuntu te avisa que tiene actualzaciones), se instala desde los repositorios:

sudo aptitude install libnotify-bin

Luego crear un archivo donde va a estar el script 😛 , a mi gusto siempre creo una carpeta dentro de mi home que se llama Scripts donde se pueden crear todas lo que nos plazca 😀

gedit /home/<usuario>/Scripts/time_reminder

Nota: Hay que reemplar <usuario> por tu usuario.

Insertamos el siguiente codigo dentro:

#!/bin/bash

TITLE="Hora actual"
ICON="appointment"
MSG="Son las $(date +%r)"
export DISPLAY=:0 && \
notify-send --icon="$ICON" "$TITLE" "$MSG" && \
aplay /usr/share/sounds/ekiga/voicemail.wav

Explico cada linea:

  • La primera linea en cada shell script dices donde esta el interprete (el que va a ejecutar tu script)
  • La linea TITLE que se desea fijar en el popup
  • La linea ICON, ésta linea tiene truco, ese nombre que puse ahi se debe que en la carpeta /usr/share/icons/Tango/34×34/ (yo uso tango puede ser Tanguerine) tienen nombres de iconos que usa el sistema (Gnome default en ubuntu) el cual seleccione uno que concuerde con mi objetivo, no se necesita poner toda la ruta ni la extesion.
  • La linea de MSG es la hora que quiero mostrar y recordar 😉
  • luego viene el comando export…., lo que hace es seleccionar la pantalla actual porque las tareas (mas adelante explico) programadas no entienden de comando que tengan que ver con interfaces gráficas, si se tienen dos monitores ese comando tiene que cambiar para que concuerde.
  • La siguiente linea es el popup, que es donde mostramos el mensaje con las variables que anteriormente definimos.
  • por ultimo un sonido de recordatorio, en ubuntu esos vienen por default al menos que se haya desinstalado Ekiga, el cua en la carpeta /usr/share/sounds/ hay varios donde escoger.

Ahora se le da al script permisos de ejecucion:

chmod +x /home/<usuario>/Scripts/time_reminder

Ahora solo falta ejecutar el script cada cierto tiempo, para eso está crontab y se modifica la lista del usuario nuestro:

crontab -e

Para ingresar la linea se presiona la tecla insert o bien la letra i

00 * * * * /home/edder/Scripts/time_reminder

Se preciona Escape luego :wq, con eso se sale del editor y lo que quere decir esos 00 es que se va a ejecutar cada hora, se puede modificar a 30 para que se ejecute cada 30 minutos.

Con eso solo hace falta esperar 😉