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.