Re: Executando um aplicativo de acordo com o estado de uma variavél do sistema!

2011-01-18 Por tôpico Bruno Schneider
2011/1/17 Fagner Patricio escreveu:
 Vejam se vocês podem me ajudar, eu fiz um script em Python para verificar o
 estado da variável /proc/acpi/ac_adapter/AC/state ela indica quando o cabo
 de energia de um notebook está ligado ou com energia, seus valores possíveis
 são on-line quando está plugado ou com energia e off-line quando não
 está plugado ou sem energia, o script terá que executar algumas ações apenas
 quando valor dessa varível mudar de um estado para outro, alguém sabe se o
 Linux tem algum sistema próprio para ficar fazendo essa checagem e assim
 chamar meu script?

Da uma olhada no python-fam. Mantenha a lista atualizada com o que
você descobrir.

-- 
Bruno Schneider
http://www.dcc.ufla.br/~bruno/


--
To UNSUBSCRIBE, email to debian-user-portuguese-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/AANLkTi=r_1139boMN=rrt_yw-epnge0g0nzcmpwmz...@mail.gmail.com



Re: [Fora de tópico] Executando um aplicativo de acordo com o estado de uma variavél do sistema!

2011-01-18 Por tôpico Junior Polegato - Linux

Em 17-01-2011 14:10, Fagner Patricio escreveu:

Olá pessoal!!
Vejam se vocês podem me ajudar, eu fiz um script em Python para 
verificar o estado da variável */proc/acpi/ac_adapter/AC/state* ela 
indica quando o cabo de energia de um notebook está ligado ou com 
energia, seus valores possíveis são *on-line* quando está plugado ou 
com energia e *off-line* quando não está plugado ou sem energia, o 
script terá que executar algumas ações apenas quando valor dessa 
varível mudar de um estado para outro, alguém sabe se o Linux tem 
algum sistema próprio para ficar fazendo essa checagem e assim chamar 
meu script?


Olá!

Em sistema modernos de Linux, usa-se o DBus. Para usá-lo com 
Python leia a documentação em [1] e sobre energia leia em [2].


[1] http://dbus.freedesktop.org/doc/dbus-python/doc/tutorial.html
[2] http://upower.freedesktop.org/docs/ref-dbus.html

Veja um programa em Python (trocar  por ) bem 
simples para capturar todos os eventos do sistema via DBus, imprimir na 
tela e sair se for pressionado o botão de power:


#!/usr/bin/env python
# -*- coding: utf-8 -*-

import dbus
import gobject
from dbus.mainloop.glib import DBusGMainLoop

def sinal_recebido(*args):
print args
# Se precissionar o botão de power sai do loop
if args == (dbus.String(u'ButtonPressed'), dbus.String(u'power')):
loop.quit()

DBusGMainLoop(set_as_default=True)
system_bus = dbus.SystemBus()
system_bus.add_signal_receiver(sinal_recebido)

loop = gobject.MainLoop()
loop.run()


Este outro aqui lista os dispositivos de energia e detecta a 
alteração no dispositivo de linha de energia:


#!/usr/bin/env python
# -*- coding: utf-8 -*-

import dbus
import gobject
import datetime
from dbus.mainloop.glib import DBusGMainLoop

def detalhes_energia():
power_interface = ('org.freedesktop.UPower', '/org/freedesktop/UPower')
power_object = system_bus.get_object(*power_interface)
power_devices = power_object.EnumerateDevices(dbus_interface = 
power_interface[0])

print Interfaces de energia:
for power_device in power_devices:
print |--, power_device
obj = system_bus.get_object(power_interface[0], power_device)
props = obj.GetAll(power_interface[0] + '.Device', 
dbus_interface = 'org.freedesktop.DBus.Properties')

for prop in props:
if prop == Type:
print | |--, prop, :, props[prop], ('Unknown', 
'Line Power', 'Battery', 'Ups', 'Monitor', 'Mouse', 'Keyboard', 'Pda', 
'Phone')[props[prop]]

elif prop == State:
print | |--, prop, :, props[prop], ('Unknown', 
'Charging', 'Discharging', 'Empty', 'Fully charged', 'Pending charge', 
'Pending discharge')[props[prop]]

else:
print | |--, prop, :, props[prop]

def sinal_recebido(*args):
obj = system_bus.get_object('org.freedesktop.UPower', 
'/org/freedesktop/UPower/devices/line_power_ACAD')
on_line = obj.Get('org.freedesktop.UPower.Device', 'Online', 
dbus_interface = 'org.freedesktop.DBus.Properties')
print datetime.datetime.now(), ('Desenergizado!', 
'Energizado!')[on_line]


DBusGMainLoop(set_as_default=True)
system_bus = dbus.SystemBus()

detalhes_energia()

# Filtro somente para chamar a função quando houver alteração nesse 
dispositivo
system_bus.add_signal_receiver(sinal_recebido,   # 
função a ser chamada quando o sinal for emitido
...Changed,# sinal 
emitido
...'org.freedesktop.UPower.Device',  # 
interface final
...'org.freedesktop.UPower', # 
interface primária
...'/org/freedesktop/UPower/devices/line_power_ACAD') 
# caminho do dispositivo no dbus


loop = gobject.MainLoop()
loop.run()



[]'s
   Junior Polegato



Executando um aplicativo de acordo com o estado de uma variavél do sistema!

2011-01-17 Por tôpico Fagner Patricio
Olá pessoal!!

Vejam se vocês podem me ajudar, eu fiz um script em Python para verificar o
estado da variável */proc/acpi/ac_adapter/AC/state* ela indica quando o
cabo de energia de um notebook está ligado ou com energia, seus valores
possíveis são *on-line* quando está plugado ou com energia e
*off-line*quando não está plugado ou sem energia, o script terá que
executar algumas
ações apenas quando valor dessa varível mudar de um estado para outro,
alguém sabe se o Linux tem algum sistema próprio para ficar fazendo essa
checagem e assim chamar meu script?

-- 
Fagner Patrício
João Pessoa - PB
Brasil