www.jjcosta.com

Principal
Ruby - Python
Gico
Camino de Santiago
Interbase

Ruby / Python


WMI con Ruby / Python


Y que es WMI según Microsoft:

Windows Management Instrumentation (WMI) provides access to information about objects in a managed environment. Through WMI and the WMI application programming interface (API), applications can query for and make changes to static information in the Common Information Model (CIM) repository and dynamic information maintained by the various types of providers.

   En castellano, que por ejlo nos permite obtener las caracteristicas del procesador de la maquina local o de una remota.

   Nota: Tenemos que trabajar con usuario con permisos de Administrador sobre la maquina para poder trabajar

      Ejlo con Ruby

require 'win32ole'
mgmt = WIN32OLE.connect('winmgmts:\\\\.')
mgmt.InstancesOf("win32_process").each{ |proc|
      puts proc.name
}

      Ejlo con Python

import win32com.client
objWMIService = win32com.client.GetObject ("winmgmts:{impersonationLevel=impersonate}!\\\\" + strComputer + "\\root\\cimv2" )
colItems = objWMIService.ExecQuery("Select * win32_process")
for objItem in colItems:
      print " Name: " + objItem.Name

      Ejlo con VBS

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
     & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Process")
For Each objItem in colItems     Wscript.Echo "Name: " & objItem.Name


The Script Center Script Repository: Sample Python Scripts
The Script Center Script Repository: VBS


Ejemplos varios con python y ruby

.

Como implementar el WakeUp en python, sólo funciona dentro de la red interna

ethernet_address = MAC
if (ethernet_address <> ''):
addr_byte = ethernet_address.split(':')
    hw_addr = struct.pack('BBBBBB', int(addr_byte[0], 16),
    int(addr_byte[1], 16),
    int(addr_byte[2], 16),
    int(addr_byte[3], 16),
    int(addr_byte[4], 16),
    int(addr_byte[5], 16))
# Build the Wake-On-LAN "Magic Packet"...
msg = '\xff' * 6 + hw_addr * 16
# ...and send it to the broadcast address using UDP
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.sendto(msg, (' ', 9))
s.close()

Como crear un fichero XML con ruby

require "rexml/document"

doc = REXML::Document.new
root = doc.add_element "root"
ordenador = root.add_element('ordenador', {"nombre"=>"prueba"})

crear = File.new("mydoc.xml","w")
crear << doc
crear.close()

Como redirigir la salida stdout y stderr en wxpython a un fichero

class Interfaz :
def __init__(self):
   app = MyApp(False)
   app.MainLoop()

Ejecutamos el codigo:
   fsock = open('error' + datetime.date.strftime (datetime.datetime.now (), '%Y-%m-%d-%H-%M-%S') + '.log', 'w')
   sys.stderr = fsock

Y cada vez queramos registrar algo:
   sys.stderr.write (str (sys.exc_value))    o realizamos un raise, o las propias excepciones no capturadas que surgan, se grabarĂ¡n en log.