Topic: SpegniPC  (Letto 1853 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline simone-27

  • python habilis
  • *
  • moderatore
  • Post: 74
  • Punti reputazione: 0
    • Mostra profilo
SpegniPC
« il: Agosto 07, 2007, 16:16 »
Salve a tutti, vorrei presentarvi un piccolo script che ho creato per poter spegnere il mio pc, stando comodamente sdraiato nel letto. In realtà piu' che per comodità l' ho creato per sfizio, ma penso che questo a voi interessi ben poco. Parto con le spiegazioni:
Prima di tutti dobbiamo configurare sudo, per potere eseguire il comando halt senza inserire nessuna password, quindi inseriamo la seguente riga in /etc/sudoers:
utente host=NOPASSWD:/percorso/eseguibile
nel mio caso specifico:
simone localhost=NOPASSWD:/sbin/halt
Una volta fatto questo prendiamo il seguente server:
#!/usr/bin/env python

from bluetooth import *
import os

porta=7
while 1:
    chiudi=False
    serv_sock=BluetoothSocket( RFCOMM ) #crea un socket bluetooth (serv_sock)
    serv_sock.bind(('', porta)) #resta in attesa (la funzione gethostname() restituisce l' ip del server)
    serv_sock.listen(1) #mettiti in ascolto e accetta al max una connessione
    cli_sock, cli_info=serv_sock.accept() #accetta le richieste dal client
    while 1:
        data=cli_sock.recv(1024) #ricevi dati dal client
        if data=='halt': chiudi=True 
        break #interrompi il ciclo   
    cli_sock.close() #chiudi il socket
    serv_sock.close() #chiudi il socket
    if chiudi: os.system('sudo halt') #se chiudi==True spegni il pc
personalmente l'ho messo in /home/simone, ma voi mettetelo dove vi pare :)
poi rendiamolo eseguibile così:
chmod +x /home/simone/SpegniPC_serv
e infine facciamo in modo che si esegua all'avvio del pc:
utenti kde: inserire un collegamento al programma, o il programma stesso in /home/nomeutente/.kde/Autostart (non ho kde quindi non posso provare, se riscontrate dei problemi fatemelo sapere)
utenti gnome: System > Preferencer > Sessions > Startup Programs, cliccare su add ed inserire il percorso del file.

Ora tocca al client:
from lightblue import *
import appuifw,sys

porta=7
data='halt'

id_blue=selectdevice()[0] #selectdevice() restituisce una lista il cui elemento 0 è l'id del dispositivo bluetooth
cli_sock=socket() #crea un socket bluetooth
try:
    cli_sock.connect((id_blue,porta)) #connettiti al server
except:
    appuifw.note(u'Impossibile connettersi al server.', 'error')
    sys.exit()
cli_sock.send(data) #invia data al server
cli_sock.close() #chiudi il socket

Si tratta di python for s60 quindi abbiamo bisogno di un telefono symbian. Per fare girere lo script abbiamo bisogno di installare i seguenti programmi che potete trovare quì http://sourceforge.net/project/showfiles.php?group_id=154155:

per 6630, 6670, 6680, ecc:
PythonForS60_1_4_0_2ndEdFP2.SIS
PythonScriptShell_1_4_0_2ndEdFP2.SIS

per n70, n90, ecc:
PythonForS60_1_4_0_2ndEdFP3.SIS
PythonScriptShell_1_4_0_2ndEdFP3.SIS

e anche del modulo LightBlue che potete trovare quì: http://lightblue.sourceforge.net/

Ora, per eseguire lo script dobbiamo metterlo in /System/Apps/Python/my/, si esegue poi python che trovate nella cartella preferiti, e, dal menu Opzioni > Run script > my\nomescript.py. Ora si sceglie il dispositivo bluetooth, e.....puff!

ps: Ho notato che in questa sezione non c'è ancore un moderatore, e io mi prenderei mooolto volentieri la responsabilità di farlo, che ne dite voi? ;) ;)

Offline moaiamorfo

  • python sapiens
  • ***
  • amministratore
  • Post: 782
  • Punti reputazione: 2
  • premitore di tasti e muovitore di mouse
    • Mostra profilo
    • Antonio Fittipaldi - docente MIUR e analista programmatore - Policoro (Matera)
Re: SpegniPC
« Risposta #1 il: Agosto 07, 2007, 16:37 »
ps: Ho notato che in questa sezione non c'è ancore un moderatore, e io mi prenderei mooolto volentieri la responsabilità di farlo, che ne dite voi? ;) ;)

detto, fatto: benvenuto a bordo. :)

saluti

Offline simone-27

  • python habilis
  • *
  • moderatore
  • Post: 74
  • Punti reputazione: 0
    • Mostra profilo
Re: SpegniPC
« Risposta #2 il: Agosto 07, 2007, 16:40 »
thanks moiamorfo!! :ok: :ok:

Offline akus85

  • python sapiens
  • *****
  • Post: 505
  • Punti reputazione: 0
    • Mostra profilo
    • BitOverflow
Re: SpegniPC
« Risposta #3 il: Agosto 07, 2007, 18:45 »
@simone-27:
Ma su Win non funziona vero ??  :thinking:

Offline Simosito

  • python sapiens sapiens
  • *
  • moderatore
  • Post: 2.072
  • Punti reputazione: 1
  • Vuoi la risposta rapida o quella veloce?
    • Mostra profilo
    • Simosito
Re: SpegniPC
« Risposta #4 il: Agosto 07, 2007, 19:12 »
se usa il comando halt direi propio di no...

Offline simone-27

  • python habilis
  • *
  • moderatore
  • Post: 74
  • Punti reputazione: 0
    • Mostra profilo
Re: SpegniPC
« Risposta #5 il: Agosto 07, 2007, 19:56 »
Prova a sostituire, nel server, la riga
if chiudi: os.system('sudo halt') #se chiudi==True spegni il pc
con la riga
[if chiudi: os.system('shutdown -s -t 00') #se chiudi==True spegni il pc
Teoricamente funziona, fammi sapere, così nel caso non funzioni faccio alcune prove e vedo cosa riesco a combinare! ;)

Offline Markon

  • python sapiens sapiens
  • *
  • moderatore
  • Post: 4.104
  • Punti reputazione: 5
    • Mostra profilo
    • Neolithic
Re: SpegniPC
« Risposta #6 il: Agosto 16, 2007, 17:26 »
E' fighissimo come script, peccato che non ho un cellulare bluetooth :(

ps: per me andrebbe messo nel cookbook :)