117 lines
3.3 KiB
Python
Executable file
117 lines
3.3 KiB
Python
Executable file
#! /usr/bin/env python
|
|
# -*- coding: iso8859-15 -*-
|
|
|
|
""" Script de lancement de mumudvb
|
|
|
|
Auteur : Frédéric Pauget
|
|
Licence : GPLv2
|
|
"""
|
|
import sys, getopt, os
|
|
from sat_base import NotRunning, CarteOqp
|
|
|
|
if os.getuid() == 0 :
|
|
os.system("su tv -c %s" % " ".join(sys.argv))
|
|
sys.exit(0)
|
|
elif os.getuid() != 101 :
|
|
print "Ce programme doit être lancé par l'utilisateur tv (uid=101)"
|
|
print "Astuce : sudo -u tv %s" % sys.argv[0]
|
|
sys.exit(1)
|
|
|
|
def usage(erreur=None) :
|
|
if erreur :
|
|
print erreur
|
|
print """Usage :
|
|
%(p)s start [<numero carte> [<transpondeur>]]:
|
|
démarrage le transpondeur donné sur la carte donnée,
|
|
si le transpondeur est omis démarre celui défini dans la conf
|
|
si seul démarre des flux définis dans la conf
|
|
%(p)s stop [numero carte] :
|
|
arrête tous les flux des cartes spécifiées,
|
|
si aucune carte est fournie arrète tous les flux
|
|
%(p)s restart [numero carte] :
|
|
démarre tous les flux des cartes spécifiées
|
|
si aucune carte est fournie redémarre tous les flux
|
|
|
|
Les options possibles sont :
|
|
-d ou --debug : affiche tous les messages
|
|
et ne daemonize pas mumudvb
|
|
-v ou --verbose : affiche les messages de debuggage
|
|
-q ou --quiet : affiche rien
|
|
--timeout_accord=<nb> : nb de secondes données pour l'accord""" \
|
|
% { 'p' : sys.argv[0].split('/')[-1] + ' [options]'}
|
|
if not erreur : sys.exit(0)
|
|
else : sys.exit(-1)
|
|
|
|
# Arguments
|
|
try :
|
|
options, args = getopt.getopt(sys.argv[1:], 'hdvq', [ 'help', 'debug' , 'quiet' , 'verbose', 'timeout_accord='] )
|
|
except getopt.error, msg :
|
|
sys.stderr.write('%s\n' % msg)
|
|
sys.exit(255)
|
|
|
|
verbose = 1
|
|
timeout_accord = 20
|
|
for opt, val in options :
|
|
if opt in [ '-v' , '--verbose' ] :
|
|
verbose = 2
|
|
elif opt in [ '-d' , '--debug' ] :
|
|
verbose = 3
|
|
elif opt == [ '-q' , '--quiet' ] :
|
|
verbose = 0
|
|
elif opt == '--timeout_accord' :
|
|
try:
|
|
timeout_accord = int(val)
|
|
except:
|
|
usage("Valeur de timeout_accord (%s) incorrecte" % val)
|
|
elif opt in [ '-h', '--help' ] :
|
|
usage()
|
|
|
|
if not args :
|
|
usage('Argument requis')
|
|
|
|
elif args[0] not in [ 'start', 'stop' , 'restart' ] :
|
|
usage("Commande %s incorrecte" % args[0])
|
|
|
|
|
|
# Carte fournie ?
|
|
try :
|
|
cartes = [ int(args[1]) ]
|
|
except ValueError :
|
|
usage("Argument %s incorrect (doit être le numéro de carte)." % args[1])
|
|
except :
|
|
# Toutes les cartes
|
|
cartes = range(6)
|
|
if verbose > 2 :
|
|
print "Mode debug non permis avec le lancement automatique"
|
|
verbose = 2
|
|
|
|
if args[0] in ( 'start', 'restart' ) :
|
|
if cartes == range(6) :
|
|
from sat_conf import conf
|
|
cartes = conf
|
|
else :
|
|
transpondeur = args[2]
|
|
from sat_base import *
|
|
try :
|
|
carte = eval(transpondeur)
|
|
cartes = [ carte(cartes[0]) ]
|
|
except NameError:
|
|
usage('Transpondeur %s inconnu.' % transpondeur)
|
|
|
|
|
|
elif args[0] == 'stop' :
|
|
from sat_base import carte
|
|
cartes = map(carte,cartes)
|
|
|
|
# On effectue l'opération demandée
|
|
for carte in cartes :
|
|
carte.verbose = verbose
|
|
carte.timeout_accord = timeout_accord
|
|
try :
|
|
eval('carte.%s()' % args[0])
|
|
except CarteOqp :
|
|
print "Carte %i occupée, abandon" % carte.card
|
|
except NotRunning :
|
|
# Pas réussi à lancer, TODO
|
|
pass
|
|
|