From 7dfb517c2a548734a38aeec95fd2ad87e16904dd Mon Sep 17 00:00:00 2001 From: Benjamin Aupetit Date: Mon, 11 Jul 2011 07:40:27 +0200 Subject: [PATCH] WakeOnLan pour les adherents depuis zamok Ignore-this: b11a024b67713315cc777ed237338b6a Ajout du script wol.py permettant aux adherents, depuis leur compte sur zamok, de lancer un paquet magique a leurs machines connectees et enregistrees au Cr@ns. Les adherents ne peuvent reveiller que leurs machines, les nounous peuvent reveiller n'importe quelle machine. Ameliorations possibles: -rendre possible le reveil des machines d'associations/clubs par les responsables (et leurs imprimeurs?) -rendre possible l'utilisation de mot de passe WOL (il n'y a qu'une option a gerer en plus) darcs-hash:20110711054027-8d035-558ab9cef56f2eb808685a29befade354fd922d7.gz --- wol.py | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100755 wol.py diff --git a/wol.py b/wol.py new file mode 100755 index 00000000..405791f1 --- /dev/null +++ b/wol.py @@ -0,0 +1,49 @@ +#! /usr/bin/env python + +import os, sys +sys.path.append('/usr/scripts/gestion') +from ldap_crans_test import crans_ldap + +if len(sys.argv) > 1 : #Affichage de la syntaxe + if (sys.argv[1] == '-h' or sys.argv[1] == '--help'): + print 'Syntaxe:' + print ' wol nom_de_la_machine' + sys.exit(0) + + +login = os.getlogin() +db = crans_ldap() +try: + aid = db.search('login=%s' % login)['adherent'][0] +except IndexError: + print 'Adherent introuvable !' + sys.exit(0) + +if len(sys.argv) > 1 : #on a un nom de machine a reveiller + nom = sys.argv[1] + print 'Recherche de la machine %s' % nom + try: + mid = db.search('host=%s' % nom)['machine'][0] + except IndexError: + print 'Machine non trouvee!' #l'user est un manche et tente de reveiller les morts + sys.exit(0) + else: + print 'Machine trouvee!' #on a maintenant une machine a reveiller + + if (mid not in aid.machines()) : #c'est sa machine ? Si oui, tout va bien, sinon... + if 'Nounou' not in aid.droits() : #c'est une nounou? Si oui, tout va bien, sinon au revoir. + print 'Vous n\'avez pas le droit de reveiller %s, ce n\'est pas votre machine' % nom + sys.exit(0) + + #On a une machine, et l'user a le droit de la reveiller, donc on lance le paquet magique + etherwake = os.popen("/usr/bin/sudo /usr/sbin/etherwake %s" % mid.mac()) + print 'Paquet magique envoye a %s' % nom + +else: #On n'a pas de nom de machine, on propose les machines de l'adherent + print 'Quelle machine voulez vous reveiller ?' + for machines in aid.machines() : + print ' - %s' % machines.nom() + print 'Syntaxe:' + print ' wol nom_de_la_machine' + +