From ddb879ccf669e8d4e6065689ebb46e0f5388ebfb Mon Sep 17 00:00:00 2001 From: pauget Date: Fri, 26 Aug 2005 17:58:23 +0200 Subject: [PATCH] Dplacement darcs-hash:20050826155823-41617-77a54bc2437a31fcfcc0421a0885e366f7b0b389.gz --- tv/launch_sat.py | 114 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100755 tv/launch_sat.py diff --git a/tv/launch_sat.py b/tv/launch_sat.py new file mode 100755 index 00000000..d3b85e4c --- /dev/null +++ b/tv/launch_sat.py @@ -0,0 +1,114 @@ +#! /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 [ []]: + 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 + +Les options possibles sont : + -d ou --debug : affiche tous les messages + et ne daemonize pas crans_dvbsream + -v ou --verbose : affiche les messages de debuggage + -q ou --quiet : affiche rien + --timeout_accord= : nb de secondesdonné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' ] : + 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] == 'start' : + 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 +