19 de enero de 2013

Documentación certificación LPI 101 (developerWorks)

Como proposito para este año, he decidido currar un poco y sacarme algunas certificaciones, entre ellas el LPI1. Por ello esta entrada está dedicada a toda la documentación desarrollada por developerWork (IBM) para superar el exámen 101 de dicha certificación.

El exámen consta de varios apartados cada uno asociado con un peso del 1 al 10 que le dá prioridad, podemos consultar los objetivos del mismo en la página del LPI. A continuación están listados todos los archivos PDFs para su descarga.

Topic 101

101.1 - Hardware and architecture
101.2 - Boot the system
101.3 - Runlevels, shutdown and reboot

Topic 102

102.1 - Hard disk layout
102.2 - Boot managers
102.3 - Manage shared libraries
102.4 - Debian package management
102.5 - RPM and YUM package management

Topic 103

103.1 - The Linux command line
103.2 - Text streams and filters
103.3 - File and directory management
103.4 - Streams, pipes, and redirects
103.5 - Create, monitor, and kill processes
103.6 - Process execution priorities
103.7 - Search text files using regular expressions
103.8 - File editing with vi

Topic 104

104.1 - Create partitions and filesystems
104.2 - Maintain the integrity of filesystems
104.3 - Control mounting and unmounting of filesystems
104.4 - Manage disk quotas
104.5 - Manage file permissions and ownership
104.6 - Create and change hard and symbolic links
104.7 - Find and place system files

Topic 110

110.1 - The X Window System

A parte de toda esta documentación, en la página del LPI podemos encontrar más información como libros y manuales o webs donde simular un exámen. También podemos prácticar haciendo exámenes como por ejemplo los que encontremos en Exam Collection o buscando información por Internet.

Un saludo, Brixton Cat

Python Script: QosCalc.py

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