Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: [OPGELOST] Python, PC uitshackelen  (gelezen 1271 keer)

[OPGELOST] Python, PC uitshackelen
« Gepost op: 2009/03/25, 20:12:45 »
Kan ik vanuit python mijn pc uitschakelen?
Zo ja, hoe?
« Laatst bewerkt op: 2009/03/26, 15:55:06 door richik »
Volop Ubuntu 12.04 gebruiker.

Offline siegi

  • Lid
Re: Python, PC uitshackelen
« Reactie #1 Gepost op: 2009/03/25, 20:32:09 »
Met python kan je toch ook gewoon opdrachten doorgeven. Zoals bijv poweroff. Hiervoor heb je natuurlijk wel root rechten nodig.
http://docs.python.org/library/commands.html

Re: Python, PC uitshackelen
« Reactie #2 Gepost op: 2009/03/25, 20:39:50 »
Ik zou commands niet gebruiken. Deze module werkt nog wel, maar word (samen met os.system en andere) sinds python 2.6 vervangen door de subprocess module. Ik denk dat commands en dergelijke ook niet meer werken in python 3.

Re: Python, PC uitshackelen
« Reactie #3 Gepost op: 2009/03/25, 21:03:43 »
Ik heb net wat zitten prullen, en het volgende doet het dus :).

#!/usr/bin/env python

import dbus

bus = dbus.SystemBus()
bus_object = bus.get_object("org.freedesktop.Hal", "/org/freedesktop/Hal/devices/computer")

bus_object.Shutdown(dbus_interface="org.freedesktop.Hal.Device.SystemPowerManagement")

Voor overige opties zet ik hier even vanwaar ik het heb:
  <interface name="org.freedesktop.Hal.Device.SystemPowerManagement">
    <method name="Suspend">
      <arg name="num_seconds_to_sleep" direction="in" type="i"/>
      <arg name="return_code" direction="out" type="i"/>
    </method>
    <method name="SuspendHybrid">
      <arg name="num_seconds_to_sleep" direction="in" type="i"/>
      <arg name="return_code" direction="out" type="i"/>
    </method>
    <method name="Hibernate">
      <arg name="return_code" direction="out" type="i"/>
    </method>
    <method name="Shutdown">
      <arg name="return_code" direction="out" type="i"/>
    </method>
    <method name="Reboot">
      <arg name="return_code" direction="out" type="i"/>
    </method>
    <method name="SetPowerSave">
      <arg name="enable_power_save" direction="in" type="b"/>
      <arg name="return_code" direction="out" type="i"/>
    </method>
  </interface>