Posteado por: kmilodenisgonzalez | enero 12, 2011

Manual de webpy


Estoy traduciendo la documentacion de webpy al español, aqui les dejo una primera parte.

Tutorial de webpy

Posteado por: kmilodenisgonzalez | diciembre 30, 2010

Compartir Carpeta con WMI

Hoy mostrare una forma de compartir carpeta empleando WMI.


import traceback,sys
import win32netcon
from win32net import NetShareAdd,error

shinfo={}

shinfo['netname']='prueba python'
shinfo['type']=win32netcon.STYPE_DISKTREE
shinfo['remark']='marca'
shinfo['permissions']=0
shinfo['max_uses']=-1
shinfo['current_uses']=0
shinfo['path']='C:\Direccion_a_la_carpeta\Compartir'
shinfo['passwd']=''
server='Akatsuki'



try:
    NetShareAdd(server,2,shinfo)
    print "success"
except error:
    print traceback.format_tb(sys.exc_info()[2]),'\n',sys.exc_type,'\n',sys.exc_value

Decargar Ejemplo :compartir.py

Posteado por: kmilodenisgonzalez | diciembre 28, 2010

wmi Eventos USB

Hoy a mostrar un pequeño ejemplo de como podemos escuchar los puertos USB en espera de algún dispositivos. Lo interesante de esto es que también nos da los datos de los dispositivos insertado en la PC. Si queremos podemos mostrar dichos mensajes empleando la librería de Python pynotify , nos obstante mas adelante mostrare algunos ejemplo de como emplearla.

import wmi
sistema = wmi.WMI ()

raw_wql = "SELECT * FROM __InstanceCreationEvent WITHIN 2 WHERE TargetInstance ISA 'Win32_LogicalDisk'"
watcher = sistema .watch_for (raw_wql=raw_wql,wmi_class="Win32_USBHub")

while 1:
    process_created = watcher ()
    print process_created.Name,' Id :',process_created.DeviceID
    print process_created.Description
    print process_created.Caption
    print process_created.VolumeName
    print process_created.VolumeSerialNumber

código :Eventos_USB.py

Posteado por: kmilodenisgonzalez | diciembre 27, 2010

wmi – Mostrando particiones en Windows

Windows Management Instrumentation (WMI) es un conjunto de extensiones al modelo de controladores de Windows que proporciona una interfaz del sistema operativo instrumentado a través del cual los componentes pueden proporcionar información y notificación. WMI es la implementación de Microsoft de Web-Based Enterprise Management (WBEM) un estándar de Distributed Management Task Force (DMTF). WMI permite a los lenguajes de scripting como VBScript administrar equipos con Microsoft Windows personales y servidores, tanto local como remotamente. WMI está preinstalado en Windows Vista, Windows Server 2003, Windows XP, Windows Me y Windows 2000.
Para el uso de módulo WMI se supone que la librería pywin32 este instalada en la maquina, esta nos da una interfaz un poco más amigable.

Hoy voy a mostrar cómo podemos consultar a nuestra PC para obtener la cantidad de Particiones compatibles con Windows. Así como la capacidad y el espacio libre de estas.

import wmi
sistema = wmi.WMI()

#Metodo para convertir de bytes a otro unidad.
def Convertir_bytes(tam, base=0):
    if type(tam) is int:
        tam = float(tam)

    if tam >= 1024.0:
        base = base + 1
        tam = tam/1024.0
        return Convertir_bytes(tam, base)
    else:
        return "%.2lf"%round(tam,2) + " " + ['Bytes', 'KBytes', 'MBytes', 'GBytes', 'PBytes', 'EBytes','ZBytes','YBytes','BBytes'][base]

if __name__ == '__main__':


    for disco in sistema.Win32_LogicalDisk (DriveType=3):
        """
        Recorremos los dispositivos logicos de tipo 3
        es decir Discos Duros
        """
        cap = Convertir_bytes(long(disco.Size))
        print "%s Tiene %s y el %0.2f%% de espacio libre." % \
         (disco.Caption,cap,(100.0 * long (disco.FreeSpace) / long (disco.Size)))


Leer Más…

Posteado por: kmilodenisgonzalez | diciembre 24, 2010

Notificaciones con DBus en python.

D-BUS es una librería para la comunicación entre procesos (IPC), aunque presenta varias características. D-BUS fue diseñado para aplicaciones de escritorio y la comunicación del sistema operativo, hoy les traigo un ejemplo en python de cómo mostrar notificación a la hora de insertar un dispositivo usb.

#! /usr/bin/python
# -*- coding: utf-8 -*-
import dbus
import gobject
class NotificarUSB:
    def __init__(self):
        self.bus = dbus.SystemBus()
        #obtenemos el objeto HAL
        self.obj_hal = self.bus.get_object("org.freedesktop.Hal",
                                                   "/org/freedesktop/Hal/Manager")
        self.hal_manager = dbus.Interface(self.obj_hal,"org.freedesktop.Hal.Manager")
        #Nos conectamos a la señal DeviceAdded(para disp agregados)..
        #para los desconectados ver DeviceRemoved.
        self.hal_manager.connect_to_signal("DeviceAdded", self._filtro)
    def _filtro(self, udi):
        #obtenemos el objeto
        device_obj = self.bus.get_object ("org.freedesktop.Hal", udi)
        #Obtenemos la Interfaz de tipo Dispositivo
        device = dbus.Interface(device_obj, "org.freedesktop.Hal.Device")
        if device.QueryCapability("volume"):
            return self.run(device)
    def _notificar(self,**kwargs):
        bus = dbus.SessionBus()
        notify_object = bus.get_object('org.freedesktop.Notifications','/org/freedesktop/Notifications')
        #Obtenemos una interfaz de tipo notificacion
        notify_interface = dbus.Interface(notify_object,'org.freedesktop.Notifications')
        #Aqui lanzamos la notificacion
        cadena = 'Ha sido insertado '+kwargs['etiqueta']+': '+kwargs['cap']+' en '+kwargs['punto_montaje']
        notify_interface.Notify("DBus Test", 0, "gtk-dialog-question", "Nuevo Dispositivo",cadena, '',{},10 )
    def Convertir_bytes(self, tam, base=0):
        if type(tam) is int:
            tam = float(tam)
        if tam >= 1024.0:
            base = base + 1
            tam = tam/1024.0
            return self.Convertir_bytes(tam, base)
        else:
            return "%.2lf"%round(tam,2) + " " + ['Bytes','KBytes','MBytes','GBytes','PBytes','EBytes','ZBytes','YBytes','BBytes'][base]
    def run(self, volumen):
        kwargs={}
        kwargs['punto_montaje'] = volumen.GetProperty("block.device")
        kwargs['etiqueta'] = volumen.GetProperty("volume.label")
        kwargs['typefs'] = volumen.GetProperty("volume.fstype")
        try:
            size = volumen.GetProperty("volume.size")
            kwargs['cap'] = self.Convertir_bytes(size)
        except:
            kwargs['cap'] = "0 Bytes"
        self._notificar(**kwargs)
if __name__ == '__main__':
    from dbus.mainloop.glib import DBusGMainLoop
    DBusGMainLoop(set_as_default=True)
    loop = gobject.MainLoop()
    NotificarUSB()
    loop.run()

Leer Más…

Posteado por: kmilodenisgonzalez | diciembre 22, 2010

Software Libre!

dou ut des libertas, con esto expreso doy para que des libertad, y es libertad positiva, la libertad para el desarrollo de nuestro propio potenciar y más directamente la libertad en la política del software, es decir Software Libre. Hoy me voy a enfoca principalmente en la importancia del desarrollo del software siguiendo los principios del Software Libre, ni mas, ni menos.

No Software Propietario, No Open Source.

GNU al igual que do ut des es reciprocidad para potenciar el desarrollo del software.


Hay muchas razones para usar Software Libre, yo solo voy a mostrar 3 de ellas.




• Libertad de uso, modificación y de venta del software.
• Colaboración voluntaria.
• Reducciones considerables de costos.




Ante todo libertad de acceso al conocimiento, ya que como explica Richard Stallman las empresas de software ven como derecho natural e incuestionable poseer software y ejercer control de sus usuarios por medio de este, así como hacer creer al usuario que sería imposible obtener software de utilidad o de un determinado programa para cierta tarea si no se ceden el derecho de los usuarios sobre el programa a la empresa responsable del mismo. Pero que sucedió luego de la aparición de GNU y por consiguiente de su licencia Copyleft GPL, pues demostró que haciendo uso de esta si era posible crear una gran variedad de programas útiles y de una calidad impresionante.
Por lo que Richard Stallman llego a una importante conclusión, que cito textualmente:

Los usuarios de ordenadores deberían ser libres para modificar
los programas y ajustarlos a sus necesidades, libres para
compartirlos, por que la cooperación con los demás constituye
la base de la sociedad.


Lo cierto es que GPL cumple muy bien su propósito, garantizar las libertades que definen el Software Libre y hacer que permanezcan inalterables en el tiempo.
La aparición del Software Libre trajo consigo una nueva variante conocida como “Código Abierto” o “Open Source”; basando su mercado principalmente en la supuesta interacción de las ideas de Software Libre junto al Software propietario, confundiendo a algunos y tentando a otros a perder parte de la libertad otorgada por el Software Libre. ¿Es acaso el “Código Abierto” lo mismo que Software Libre?, para responder a esto primero hay que preguntarse si había necesidad de separarse de la comunidad de Software Libre y crear la de “Código Abierto” bajo el débil pretexto de una ambigüedad latente entre “libre” y “gratuito”, a mi modo de ver habían otros intereses por debajo de la mesa; intereses empresariales e institucionales de quienes comparten mayoritariamente una ideología que antepone las ganancias económicas a la libertad, a la comunidad y los principios, como bien explica Richard Stallman en su libro Software Libre, Sociedad Libre aunque a pesar de todo eso la comunidad de Open Source también a jugado un papel decisivo en el desarrollo de Software Libre

Asumir libertad, pero con responsabilidad, creo es el resultado detrás de la ideologia del Software Libre, este nos brinda un modo de trabajo voluntario y totalmente cooperativo ya que sus integrantes trabajan por voluntad propia y bajo un mismo interés.

« Newer Posts

Categorías