Feliz año, merry christmas y esas cosas que se dicen... Ya se que es un poco tarde pero es mi primera entrada del año y tenía que decirlo en algún momento. Tengo varias entradas entre manos y algunas de ellas dedicadas a scripts Python que estoy realizando.
En esta entrada voy a mostrar la actualización que he realizado del script TosCalc.py, descrito en esta entrada. En primer lugar le he cambiado el nombre porque el anterior no me convencía, he utilizado la variable self para almacenar todos los valores que se van calculando y un pequeño control de excepciones que controla los errores el script.
El script acepta solamente un argumento y éste debe ser un número entero (de tipo int), en caso de no pasar un número fallará salvo algunas excepciones siempre y cuando los valores estén comprendidos entre el 1 y el 7.
Sintaxis: ./QosCalc.py value
Código fuente:
#!/usr/bin/env python # # Name: QoSCalc.py # Description: Calculate any QoS values through a IP Precedence or Class Selector # Author: Brixton Cat # Date: 19 Ene 2013 # Version: 1.0 # Sintax: ./QoSCalc.py value # ### Dependencies import sys ### tosCalc class class qosCalc: """ Class to calc any QoS values through a IP Precedence or Class Selector """ def __init__(self, value): """ Initializing qosCalc class """ self.value = value # Creating value variable # Check value introduced if value < 1 or value > 7: print "[!] Error: Allow values it's from 1 to 7" sys.exit(3) # Exit code: 3 def eightBits(self): """ This function add 0s to right side of binary variable and calc their decimal value """ self.tosb = self.dscpb + str(0) * 2 # Type of Service binary value self.tosd = int(self.tosb, 2) # Type of Service decimal value def main(self): """ Main function """ calc.threeBits() calc.sixBits() calc.eightBits() def results(self): """ Prints values of the IP Precedence or Class Selectors argument """ # Header of table print "Value 3bits DSCP Bin DSCP ToS Bin ToS" print "----- ----- -------- ---- ------- ---" # Values print " %d\t%s\t%s\t %d\t%s %d" % \ (self.value, self.binary, self.dscpb, self.dscpd, self.tosb, self.tosd) return sys.exit(0) def sixBits(self): """ This function add 0s to right side of binary variable and calculate their decimal value """ self.dscpb = self.binary + str(0) * 3 # DSCP binary value self.dscpd = int(self.dscpb, 2) # DSCP decimal value def threeBits(self): """ This function convert decimal argument to 3 bits value and check correct lenght of this """ # If less of 3 bits, add 0s to left of binary variable bina = bin(self.value).split('b') # Array ['0', 'value'] if bina[1] < "3": rest = 3 - len(bina[1]) self.binary = str(0) * rest + bina[1] else: self.binary = bina[1] ### Script if __name__ == "__main__": try: value = int(sys.argv[1]) # Check first argument calc = qosCalc(value) # Initializing qosCalc class calc.main() # Run main() function calc.results() # Prints results except IndexError: # Error: No argument print "[!] Error: Any value defined" sys.exit(1) # Exit code: 1 except ValueError: # Error: Bad arguments print "[!] Error: Not valid Class Selector or IP Precedence value" sys.exit(2) # Exit code: 2 #EOF ##FVE
Un saludo, Brixton Cat
No hay comentarios:
Publicar un comentario
Bienvenid= si quieres dejar un comentario