Mostrando entradas con la etiqueta Linux. Mostrar todas las entradas
Mostrando entradas con la etiqueta Linux. Mostrar todas las entradas

viernes, 18 de julio de 2014

Por qué Uso Linux Mint!



Siempre nos va a invadir "la gran pregunta"!, en el mundo de la informática muy a menudo podemos tener encarnizadas conversaciones acerca de cual pude ser o no el mejor (sistema operativo, lenguaje de programación, cliente de twitter, servicio de correo...)  y pare de contar, lo que si les puedo decir es que cada uno de esos mejores o peros en algo, tienen una razón de serlo y una historia, en algunos más atractiva y otros de novela.

No quiero tratar de envenenar sus almas con posiciones particulares sobre el tema de los sistemas operativos, muy por el contrario solo mencionarles porque he espesado a usar Linux Mint.

viernes, 11 de abril de 2014

Como reparar un sistema de ficheros EXT4 con bloques dañados.

Hola!, después de un largo tiempo me he animado a crear este Post que puede ser de utilidad, se hace con capturas de imágenes de un caso real en el que un sistema de ficheros EXT4 corriendo Linux/Debian Wheezy se daño hace algunos meses por motivos de fallos eléctricos.

A continuación las imágenes de la primera la falla, mi amigo llama desesperado que la computadora se daño y que ha estado fallando mucho la luz!, que necesita la computadora operando porque hace funciones de router, filtrado de ip y enmascaramiento de ip, que tiene la empresa parada y que ahí me envía esa foto a ver si lo puedo ayudar.







Aveces podía entrar el el Grub y se quedaba aquí




Luego de ver la imagen, yo le comunico que es un fallo de disco y que hay que reparar el mismo, pero ya me temía que solucionar esto iba a ser un poco duro porque no podía acceder de forma remota al computador y mi amigo es neófito en cuanto a utilizar la consola de comandos para hacer algo en la computadora.

Ya resignados sabíamos que con este sistema no se podía reparar, es decir; el sistema operativo no estaba operable con los servicios mínimos montados para desde el mismo poder hacer una reparación de su disco dañado. En ese momento necesitábamos un sistema operativo que pudiera hacer reparaciones a este tipo de partición (EXT4) y a su vez que se pudiera montar tipo Live Cd  bueno !necesitamos un live Live Cd que sea sencillo "nada de interfaz gráfica, solo la consola" para ejecutar los comandos y reparar el disco duro, entonces decantamos por SystemRescueCd descargamos la versión Stable X86 y procedimos - bueno mas bien procedió mi amigo ya que el estaba en oriente y yo en los andes -  a cargar (bootear) la maquina con el CD.




Revistamos las particiones que tenia el disco duro, en nuestro caso el disco primario montado en "/dev/sda".

# parted /dev/sda "print"





Allí identificamos dos particiones con sistema EXT4, en primer lugar nos encontramos la partición "sda1" que se utiliza para el boot y de segundo una partición lógica "sda6" que se utiliza para otras cosas.

Con la esperanza que no fuera la partición del boot "sda1" la dañada procedimos a reparar como se hace tradicionalmente la particón "/dev/sda6".

# fsck -c -y -v /dev/sda6



Pero esta partición solo tenia algunos errores menores y no era la partición dañada que estaba originando el problema en la computadora. Procedimos entonces a reparar la petición del boot del sistema la "/dev/sda1".


# fsck -c -y -v /dev/sda6



Bien allí estaba el error no era un error menor como la partición "sda6", esta partición tenia un problema de bloques malos (bad blocks) un error de geometría de disco. Para reparar este error había que averiguar que tamaño de bloque.


Luego ejecutamos.

# e2fsck -b 32768 /dev/sdb1
 # badblocks -s -v -n -f /dev/sda7 






viernes, 18 de enero de 2013

Cambiar la dirección MAC de tu tarjeta de red

En las redes de computadoras, la dirección MAC (siglas en inglés de media access control; en español "control de acceso al medio") es un identificador de 48 bits (6 bloques hexadecimales) que corresponde de forma única a una tarjeta o dispositivo de red. Se conoce también como dirección física, y es única para cada dispositivo. más..

La necesidad de cambiar este numero es muy especifica para cada usuario, pero imaginen que en su trabajo, están realizando filtrado de información mediante alguna técnica "cual sea" aprovechando este numero único que permite conocer quien es la persona que normalmente utiliza una computadora!, tal vez ahora si tiene sentido cambiarlo.

Este "como" esta realizado para ser implementado en Linux, en primera instancia utilizaremos Linux/Debian, estos son los pasos a seguir:

  • Tener permisos de root ó "super usuario" -> "#"

  • Instalar el paquete "macchanger", este nos permite realizar un "fake" o cambio falso de MAC y asignarlo a un dispositivo de red.

#aptitude install macchanger


  • Con este simple paso de instalación ya tenemos la aplicación "macchanger" y desde ahora podemos cambiar el MAC de la siguiente manera, suponiendo que nuestro dispositivo de red es el "eth0".

#macchanger -r eth0 


  • Se mostrara un mensaje como este, que indica el MAC actual y el MAC falso asignado al dispositivo:  

Current MAC: b8:dd:ac:67:91:4f (unknown)
Faked MAC: 94:c1:a0:3f:3f:31 (unknown)

De esta forma ya sera difícil identificar a la persona detrás de la computadora  ya los sistemas de filtrado no tendrán la MAC falsa relacionada con un usuario.

Para hacer que este técnica se aplique cada vez que encendemos la computadora de forma automática podemos ejecutar lo siguiente:
#echo '#!/bin/sh' > /etc/network/if-pre-up.d/fake-mac; echo '/usr/bin/macchanger -r eth0' >> /etc/network/if-pre-up.d/fake-mac

Eso creara un fichero llamado "fake-mac" en la ruta /etc/network/if-pre-up.d/ , el cual sera evaluado cada vez que la computadora inicie y justo antes de levantar la interfaz de red "eth0" sera cambiado el numero de MAC.

lunes, 27 de febrero de 2012

Buscar fichero distinto a:

Utilizando la potencia del comando "find" en Linux, veremos como buscar ficheros distintos a la extensión (.mp3, .Mp3 y .MP3).

Situarse en el directorio que quiere realizar la búsqueda:
$cd  /media/333-000

Para buscar:
$find . -name "*.*" -not -name "*.??3"

Esto devuelve como resultado una lista de ficheros que se encuentran dentro del directorio /media/333-000 distintos a las extensiones antes mencionadas. En mi caso quería eliminar la lista de ficheros resultantes, para eso solo se pasa el parámetro "-delete" al comando "find".



martes, 16 de agosto de 2011

Séptimo Día Debian - Mérida

El sábado 27 de agosto se estará celebrando por séptima vez el día Debian - Mérida.

Cada 16 de agosto se conmemora un nuevo aniversario del nacimiento del proyecto Debian, por lo que cada grupo de usuarios organiza un evento a nivel local con variadas actividades referentes tanto a Debian como al software libre en general.

Toda la planificación del evento en -> http://wiki.debian.org/DebianDay2011/Venezuela/Merida




martes, 21 de junio de 2011

Android Python Apps

Continuando con el Post Python en Android + script de regalo SMS/GPS/SMS he empaquetado el scrip SMS/GPS/SMS en una aplicación llamada smslocation-beta-0.0.1.apk para Android.

Actualmente se encuentra en su fase de pruebas , pero es funcional, pueden encontrar la información completa en la dirección http://hg.web-aox.com/android-python-apps/wiki/Home, incluso pueden reportar errores y agregar solicitudes de nuevas funcionalidades.

Django Plug Modules

Es una aplicación que permite incorporar módulos en un proyecto de Django, es ideal para proyectos con necesidades de ser escalables que contengan varios módulos y los mismos deban ser relacionados y/o dependientes entre ellos.


Características:



  • Fácil de implementar, se instala como una aplicación Django en su proyecto.

  • Comando para creación de módulos.

  • Fichero de configuración de módulos, permite describir dependencias fuertes ó débiles con otros módulos.

  • Indexa dinámicamente los módulos instalados.

  • Interfaz de información del estado y relación entre módulos.

  • Diagrama de relación entre módulos.

  • Cada módulo maneja independientemente todos sus ficheros.

  • Simple librería que suministra la información necesaria para relacionar módulos a nivel de vistas y templates.

  • Cumple con todas la convenciones de programación en Django.



Información completa en -> https://bitbucket.org/olivaresa/django-plug-modules/wiki/Home



viernes, 28 de enero de 2011

Liberar Motorola Milestone A853 - Movilnet Venezuela

Este post cuenta como he liberado un Motorola Milestone de la Operadora Movilnet de Venezuela.

Primero que nada les cuento que la mayoría de las operadoras bloquean los aparatos móviles para que solo puedan funcionar en dicha Red, aunque nuestros teléfonos con tecnología GSM se les pueda cambiar de SIM/CARD ó (chip) por el de una operadora distinta, los mismos no funcionan. Allí se nace la necesidad de tener que utilizar otros métodos para poder utilizar "nuestro" teléfono con la operadora que nos convenga.

La mayoría de los teléfonos GSM actuales pueden ser liberados con solo introducir un código en el teléfono, en mi caso lo he realizado de la siguiente forma.

Teléfono: Motorola/Milestone A853
Operadora: Movilnet - Venezuela

Requerimientos:

  • Comprar un SIM/CARD ó chip de una operadora distinta, en mi caso mi operadora era Movilnet y compré uno de Movistar.

  • Conocer el código IMEI de nuestro Teléfono:

    • El IMEI es un código de 15 dígitos que puede ser encontrado de dos formas, la primera es sacando la batería y observando la etiqueta el cual muestra el código, la segunda es marcando en el teléfono como si se tratara de una llamada lo siguiente: *#06#*



  • Cuenta en PayPal , en el caso de Venezuela con cupo en dolares aprobados por CADIVI para compras electrónicas, o en su defecto dolares disponibles en la cuenta.

  • Conexión a Internet y cuenta de correo electrónico.

Compra de código de desbloqueo:

  • La empresa, servidor, página ó servicio con el que vamos a comprar el código es gsmliberty

  • Seccionar la marca y modelo del teléfono, en mi caso Motorola/Milestone y presionar el botón "unlock my phone".



  • Aparece el precio en dolares, ahora debe ingresar el código IMEI y presionar el botón "Add to Cart".



  • Seleccionar el modo de pago, en mi caso PayPal y presionar el botón "Buy now".



  • La página de gsmliberty redirige el cobro a la página de PayPal, en el cual debemos colocar nuestro login que normalmente es el correo electrónico y el password.



  • En este punto debemos aprobar el pago para gsmliberty y automáticamente gsmliberty enviara un correo electrónico a tu cuenta de correo notificando la compra e informando que tu código se esta procesando y el número de orden, luego en un par de horas lo recibirás vía email.

Introducir el código y liberar el teléfono:

  • Estar pendiente a la llegada del correo electrónico  con el código de desbloqueo, cuando lo reciba puede que sea uno con la siguiente estructura: (Phone IMEI: 123456789123456 returned unlock code is : J28NNN25Z5 78951298 32124510 1403D40F)

  • Introducir la nueva SIM/CARD (chip) en el teléfono y encenderlo, el mismo mostrara el mensaje; "PIN de desbloqueo de red SIM" introducir el código suministrado y presionar la tecla aceptar.



  • Se muestra el mensaje "Solicitando desbloqueo de red".



  • Luego muestra el mensaje "Desbloqueo de red correcto", y ya esta listo para utilizar el teléfono con la nueva operadora y cualquier otra que necesitemos, después de esto el teléfono cargara como de costumbre.



En mi caso el código suministrado con esta estructura no funciono, me mostró el mensaje "Solicitando desbloqueo de red" y luego "Desbloqueo de red incorrecto" y regreso nuevamente a la primera pantalla que dice "PIN de desbloqueo de red SIM", probé varias combinaciones con el código y no funcionaba, intente unas 8 veces y luego regresé a la página de gsmliberty a la parte soporte de para desbloquear Motorola específicamente aquí .

Conteste unas preguntas ó test que aparece allí y me di cuenta que existen dos tipos de código para desbloquear el que recibimos con esta estructura "J28NNN25Z5 78951298 32124510 1403D40F" y uno de solo 16 dígitos y procedí a escribir un correo electrónico a  sales@gsmliberty.net y support@gsmliberty.net informando que el código suministrado no me funcionaba y que tal vez necesitaba un código de 16 dígitos para desbloquear el teléfono también coloqué nuevamente el IMEI, la operadora que era Movilnet/Venezuela y el número de orden.

Luego de eso ellos escribieron un correo diciendo que si el código suministrado no funciona era probable que necesitara un código de 16 dígitos y me ofrecieron dos soluciones: la primera era reintegrarme los $9. 99 el cual se reflejaría en mi cuenta de PayPal, la segunda era que me podían prestar su servicio "Motorola Premium Service" que generaría el código de 16 dígitos, tendría un costo de %15.00 adicionales a los $9.99  y tardaría de 1 a 3 días hábiles en entregarse, que esperaban mi decisión por esa misma vía "correo electrónico" .

En ese momento decidí arriesgarme pensando que si no servía ellos nuevamente me propondrían reintegrar el dinero, respondí su correo diciendo que quería la segunda opción y nuevamente escribí el IMEI, operadora, país Venezuela y el numero de orden. Luego a eso me llego un mail con un enlace para cobrar los $15.00 extras con el mismo método de pago por PayPal, aprobé el pago y luego a los 2 días tenia mi nuevo código, con la siguiente estructura "Phone IMEI: 123456789123456 returned unlock code is : 9754908327887910".

En ese momento coloqué nuevamente el chip de Movistar, encendí el teléfono, escribí el código y cargo de forma exitosa, al momento de escribir este post he probado con Movistar y Digitel de forma exitosa.

Algunas personas en Venezuela cobran desde 350 Bsf. hasta 500 Bfs. por suministrar el código de desbloqueo, en mi caso al contar con divisas para realizar la compra electrónica  me permitió gastar unos 100 Bsf. al cambio oficial.

lunes, 14 de diciembre de 2009

Django Hosting en Venezuela!

Últimamente me he dedicado a realizar aplicaciones utilizando el Framework para Python Django, sencillamente extraordinario, para el desarrollo cuenta con un servidor de peticiones Web/Http el cual permite ir ejecutando la aplicación sin tener que montar un servidor web para hacerlo.

El problema esta cuando ya esta diseñada aplicación que sera instalada en un entorno de producción “llevar la aplicación a la vida real”, es posible que si uno trabaja para una institución pública o privada “grande” cuente con salas de servidores “centro de datos”, esto no es mucho problema habilitar un Virtualhost o servidor para montar la aplicación, ya que se cuenta con conexiones dedicadas a internet que cuentan con IP's públicas, pero, qué pasa cuando cuando uno o el cliente para el cual uno esta “matando el tigre” no cuenta con estas bondades?.

En primera instancia uno pude ir a la Wiki del proyecto de Django, específicamente http://code.djangoproject.com/wiki/DjangoFriendlyWebHosts allí encontraremos una lista de proveedores de servicios que oficialmente dan soporte sobre Python/Django, esto quiere decir, que si queremos un servicio de Hosting para una aplicación Django deberíamos contratar con alguno de estos proveedores, pero que pasa si queremos un servicio de Hosting que tenga soporte en español y que se pueda pagar en moneda Venezolana?. Bien la respuesta es que a esta fecha no existe un servicio de Hosting que soporte Django en Venezuela, por lo menos no oficialmente y que yo conozca.

Gran cantidad de Hosting dicen que soportan Python, pero si preguntan , pero, y soportan mod_python o fastcgi?, la respuesta es no sabemos o que uno debe contratar un servicio Premiun para contar con estas cosas. Para terminar les quiero contar como he montado una aplicación de Django en un Hosting en Venezuela.

El proveedor es http://www.venehosting.com , oficialmente ellos no dan soporte para aplicaciones en Django, pero tienen habilitado el modulo de Python para Apache “mod_python”, con eso es suficiente para ejecutar aplicaciones de Django, su servidor(es) corren en Os/Linux i386 y tienen python2.5., el panel es Plesk y la transferencia de ficheros es en FTP, no tiene soporte para SSH. Los pasos son los siguientes:

  • Comprar uno de los planes que ofrecen (yo solo compré el básico por 1 mes, osea que la prueba me salio en 12 Bsf)

  • Luego de pagar y tener los datos para poder entrar al Panel Plesk, asignar el password para entrar vía FTP.

  • Subir al directorio “httpdocs” que por defecto es el directorio al que apunta el dominio principal un fichero que debe llamarse “.htaccess” con el siguiente contenido que habilitara los módulos de Python.


SetHandler python-program

PythonHandler django.core.handlers.modpython

PythonPath "['/var/www/vhosts/NOMBRE-DEL-DOMINIO/httpdocs', '/var/www/vhosts/NOMBRE-DEL-DOMINIO/httpdocs/modules'] + sys.path"

SetEnv DJANGO_SETTINGS_MODULE PROYECTO.settings

PythonDebug On



Tener en cuenta que donde dice “NOMBRE-DEL-DOMINIO” debe estar el nombre de su dominio , por ejemplo “midominio.com” y cambiar “PROYECTO.settings ” por el nombre de su proyecto, por ejemplo: “miaplicacion.settinsg” en donde “miaplicacion” es el nombre del directorio de su aplicación y “settings” el fichero que contiene la configuración del proyecto Django settings.py.




  • Crear un directorio en su maquina llamado “modules”, descargar Django en tu maquina de la siguiente dirección http://www.djangoproject.com/download/1.1.1/tarball/ el cual es un comprimido que usted debe descomprimir, copiar desde el directorio “Django-1.1.1” el directorio llamado “django” al directorio recién creado llamado “modules”, si todo esta bien el directorio “modules” debería ser así “/modules/django”

  • Subir al directorio “httpdocs” el directorio “modules” que contiene el framework Django, el Python que esta en el Hosting lo integrara a su path.

  • Subir su aplicación al directorio “httpdocs”.

Este es un mini howto de como hacerlo, ahora, pudiéramos colocar un ejemplo: supongamos que mi aplicación y/o proyecto se llama “tatakua”, es de suponer que tengo un directorio llamado “tatakua” donde esta toda la estructura de proyecto de Django y que mi dominio se llame “tatakua.net”, entonces:



  • Mi fichero “.htaccess” contendría esto;


SetHandler python-program

PythonHandler django.core.handlers.modpython

PythonPath "['/var/www/vhosts/tatakua.net/httpdocs', '/var/www/vhosts/tatakua.net/httpdocs/modules'] + sys.path"

SetEnv DJANGO_SETTINGS_MODULE tatakua.settings

PythonDebug On





  • Mi directorio “modules” contendría un subdirectorio llamado django y se vería así “/modules/django”

  • Mi directorio de aplicación o proyecto se llamaría “tatakua” que dentro tiene settings.py y todo lo demás de un proyecto Django.

  • Así quedaría la estructura de directorios:


|-- var

| |-- www

| | |-- vhosts

| | | |-- tatakua.net

| | | | |-- httpdocs

| | | | | |-- .htaccess

| | | | | |-- tatakua

| | | | | | |-- settings.py

| | | | | | |-- resto de ficheros y directorios del proyecto

| | | | | |-- modules

| | | | | | |-- django

| | | | | | |-- resto de ficheros y directorios de django del FrameWork Dajango


Extra, les comento que el directorio “modules” se puede utilizar para copiar otros módulos al cual no tenga soporte el Python del Hosting, en mi caso en ese directorio también tengo a PIL y MySQLdb.

martes, 30 de junio de 2009

sofi



Sofi es una aplicación web que gestiona eventos, presentaciones, ponentes y suscripciones.
Sofi es ideal como portal web de publicación de eventos tipo blog.
Sofi cuenta con una interfaz de administración.
Sofi es una aplicación liberada bajo la licencia GPLv2, por lo tanto usted tendrá derecho de utilizar, estudiar, modificar y distribuir libremente según los términos de la licencia.
Sofi esta desarrollada con el lenguaje de programación Python utilizando Django como framework.

Página del proyecto: http://sofi.cenditel.gob.ve

Algunas capturas de pantalla:

  




jueves, 11 de junio de 2009

Jugando con las X


Un día realizando una aplicación de escritorio con Python y la librería Pygame me di cuenta que estaba necesitando muchos recursos de maquina, se trataba de una aplicación que realiza un gráfico de curva a partir de una adquisición de datos obtenida a alta velocidad por el puerto USB.

Después de optimizar la aplicación varias veces , me dispuse a probarla con el consumo mas bajo de Xwindow que pudiera, para eso necesitaba el servidor de Xwindow pero no necesitaba el WindowManager Gnome, y realicé mi prueba de la siguiente manera:

Estando en el escritorio de Gnome pulsé las teclas Ctrl+Alt+F1, esto me llevo a una consola del sistema, en el cual hay que loguearse como root, y lo primero es:



  • Desactivar el WindowManager de Gnome


#/etc/init.d/gdm stop



  • Declarar una la variable que manejara Xwindow como display


#export DISPLAY=0:0



  • Arrancar las Xwindow


#X



  • Cambiar de consola al entrono gráfico con las teclas las teclas Ctrl+Alt+F7

Esto mostrara las Xwindow ya corriendo, la imagen sera como esta.



Luego podremos arrancar cualquier aplicación grafica en el servidor X, supongamos que queremos correr firefox:



  • Abrimos una segunda consola de sistema, pulsando las teclas Ctrl+Alt+F2


  • Declarar una la variable que manejara Xwindow como display


#export DISPLAY=0:0



  • Ejecutamos firefox


#firefox



  • Cambiar de consola al entrono gráfico con las teclas las teclas Ctrl+Alt+F7

La captura:


miércoles, 22 de abril de 2009

Aprender Python divirtiéndose

Aprender a programar debe ser divertido!, para adultos y niños por igual.

Este es el primero de una serie de publicaciones que buscan introducir al mundo de la programación específicamente en Python a personas que tengan interés.
Para lograr el objetivo nos apoyaremos en la herramientas RUR-PLE



RUR-PLE es un entorno diseñado para ayudarle a aprender la programación utilizando el lenguaje Python. Dentro de un mundo artificial en el que un robot puede ser programado para realizar diversas tareas. Usted también será capaz de aplicar sus habilidades de programación.

Aprender a programar es como aprender a tocar un instrumento musical: hay que hacerlo, y no simplemente leer sobre él.

Unas de las limitaciones que encontraremos en este post, es que estaremos basándonos en el sistema operativo Linux/Debian. Asumiendo que ya tienen instalado Linux/Debian o alguna de las distribuciones de Linux Basadas en él (Ubuntu, Kubuntu...) necesitaremos lo siguiente:


  • wxPython - (el paquete se llama python-wxgtk2.8, para instalar abra una consola y ejecute)

aptitude install python-wxgtk2.8


  • RUR-PLE - (descargar el programa desde aquí, luego descomprimirlo, desde consola podría ser así)

unzip rurple1.0rc3.zip

Para ejecutar el programa:
cd rurple1.0rc3

python rur_start.py

Si todo va bien veremos esto:

[gallery]

Para interactuar con el robot existen un grupo de instrucciones o funciones:

  • Acciones

    • move()

    • turn_left()

    • pick_beeper()

    • put_beeper()

    • turn_off()

  • Pruebas (test)

    • front_clear()

    • facing_North()

    • carries_beepers()

    • next_to_a_beeper()

Por ahora nos limitaremos a ver como se ejecuta el programa y utilizaremos dos acciones; mover un paso el robot (move()) y apagar el robot (turn_off()), ver el siguiente video.



En la próxima entrega, veremos como a partir de estas funciones podemos empezar a programar en Python de una forma divertida!.

lunes, 10 de noviembre de 2008

Clonar maquinas con Linux

Existen varios programas que pueden hacer este trabajo como (g4l, clonezilla...), sin embargo yo estaba embarcado en hacerlo para conocer en realidad que es lo que necesitaba para clonar un disco sin necesitar programas especializados.

En este caso lo que quería era tener un clon y replicarlo en grupo de maquinas totalmente iguales, las maquinas tenían ya instalado Linux/Debian Lenny totalmente configurado y me dispuse a clonar el disco de la siguiente manera.

Requerimos:

  • Ubuntu ó cualquier distribución Live CD

  • Maquina (origen) totalmente configurada y funcional

  • Dispositivo de almacenamiento (en mi caso utilicé un disco externo de un TeraByte USB) ó Conexión a una Red Interna.

  • Comandos dd, nc y gzip.

Pasos:

  1. Botear la maquina que ya esta configurada y queremos clonar
    con el LiveCD.

  2. Abrir una consola y cambiarse a root "sudo su".

  3. Identificar que dispositivo de disco queremos clonar, en mi caso es "sda"

  4. El comando que necesitamos utilizar para clonar el disco es "dd", para obtener la ayuda sobre este comando se puede ejecutar "man dd". Básicamente es un comando que permite tomar como entrada un fichero y copiarlo a otro utilizando varias configuraciones.

  5. En este momento podemos elegir entre:

Clonar a un dispositivo local:

conectar el dispositivo y observar en que dirección se monta, en mi caso es /media/usbdisk/aox:


Generar la imagen
#dd if=/dev/sda | gzip | dd of=/media/usbdisk/aox/clon.img.gz

Clonar la imagen a una maquina
#gunzip < /media/usbdisk/aox/clon.img.gz | dd of=/dev/sda

Clonar por la red local:

Maquina origen
#dd if=/dev/sda | gzip | nc 192.168.x.x 12345

Maquina destino
#nc -l -p 12345 | gunzip | dd of=/dev/sda

Generar la imagen en un dispocitivo local puede tardar 1 hora para un disco duro de 80Gb y para clonarlo unas 3 Horas, para clonar en red local puede tardar el proceso unas 3 a 3:30 horas.

miércoles, 8 de octubre de 2008

Paquetes egg - - como poner huevos con Python

En Linux/Debian es necesario instalar el paquete python-setuptools

#aptitude install python-setuptools


para hacer este ejercicio tome como insumo la documentación de la página http://peak.telecommunity.com/DevCenter/setuptools, luego crear directorios y ficheros del paquete:

$mkdir egg_prueba
$mkdir paquete_egg

$cd egg_prueba

$echo "" > paquete_egg/__init__.py
$vim paquete_egg/familia.py


   1 
2 class Familia:
3 def __init__(self):
4 self.nombre = ""
5
6 def set_nombre(self, nombre):
7 self.nombre = nombre
8
9 def get_nombre(self):
10 return self.nombre

luego crear en el directorio paquete_egg/ el fichero setup.py que contiene toda la información del paquete.

$vim setup.py


   1 
2 # importa setuptools
3 from setuptools import setup, find_packages
4
5 # Tupla con información del paquete
6 setup(
7 name = "familia" # Nombre Paquete,
8 version = "0.1" # Versión Paquete,
9 packages = find_packages() # Busca módulos dentro del directorio paquete_egg,
10 scripts = [] # Scripts que deben ir a /usr/bin,
11
12 install_requires = [] # Dependencias de otros paquetes,
13
14 package_data = {}# Diccionario con ficheros que deben incluirse en el paquete, por ejemplo {'': *.txt},
15
16 # Metadatos para el repositorio Pypi
17 author = "Alexander Olivares",
18 author_email = "olivaresa@cantv.net",
19 description = "Este es un paquete egg de prueba con una clase Familia",
20 license = "GPL",
21 keywords = "" # Palabras clave de busqueda,
22 url = ""
23 )


Luego de hacer esto debemos tener la siguiente estructura de archivos y directorios:


egg_prueba/
setup.py
paquete_egg/
__init__.py
familia.py

Estando en el directorio egg_prueba/ ejecutar:

$python setup.py bdist_egg


Eso creara el paquete que estará en egg_prueba/dist/familia-0.1-py2.4.egg

para instalar:

#easy_install egg_prueba/dist/familia-0.1-py2.4.egg


para utilizar:


   1 from familia import *
2
3 f = Familia()
4 f.set_nombre("Olivares")
5 print f.get_nombre()
6 "Olivares"

Editar código Python con vim

El editor vim es muy potente para editar código en Python, no tiene nada que enviar a algunas reconocidas IDE's y además tiene muchos plugins.
Para utilizarlo en Linux/Debian se debe instalar el paquete "vim-python"

#aptitude install vim-python

Luego agregar estas lineas al fichero /etc/vim/vimrc

syntax on
set tabstop=4
set shiftwidth=4
set expandtab
set softtabstop=4
set background=dark
set autoindent

set smartindent " Identacion de acuerdo a marcadores lexicos
set sta " Las tabulaciones se ecriben como sw
set linebreak " Quebrar lineas largas
set sbr=@@@ " Marcador de linea quebrada
set number " Mostrar numero de linea
set scrolloff=2 " Para mostrar el contexto al cursor
set wildmode=list:longest,full " Autocompletacion en linea de comandos
set showcmd " Mostrara el comando a medida que lo tipeamos
set visualbell " Sin ruidos, por favor

autocmd BufRead *.py set smartindent cinwords=if,elif,else,for,while,try,except, finally,def,class

Esto les dará una mejor forma de trabajo, además de coloreado de sintaxis, 4 espacios por tab y algunas cosas mas.

Para utilizar la opción de auto-completado de código, presionar las teclas Ctrl-x Ctrl-o, por ejemplo:

$vim aox.py

import sys

sys. y aqui Ctrl-x Ctrl-o y les saldrá una solapa con todas las opciones
de sys

Screenshot



Como hacer un Mirror de GNU/Debian

Alexander Olivares, olivaresa@cantv.net

V0.1, 1 de Febrero del 2005.


En este documento se comenta como hacer una replica de GNU/Debian, no es un documento avanzado lo que se busca es explicar lo mas sencillamente posible como hacerlo.


Introducción.

Un Mirror de GNU/Debian no es mas que obtener una replica ó imagen de los paquetes de software necesario a partir de un site.

GNU/Debian es una de las distribuciones de Linux que mas esta teniendo aceptación en los usuarios de Linux, es uno de los sistemas operativos de código abierto que se desarrolla prácticamente día a día con una gran cantidad de paquetes que podemos mantener actualizados totalmente en línea accediendo a un sitio que contenga un mirror, es por eso que es interesante mantener un replica de GNU/Debian, especialmente si tenemos varias computadoras que utilizan esta distribución las cuales debemos mantener actualizadas.

Requerimientos.

  • Sistema Operativo GNU/Debian Testing (Sarge) ó Unstatble (Sid).

  • Saber que es lo que se desea replicar, es posible realizar un replica parcial o total, GNU/Debian esta soportado por las Arquitecturas (Intel x86 IA-32 i386, Sun Sparc, AMD64, etc... ver http://www.es.debian.org/ports/ ) y normalmente se mantienen 3 versiones llamadas (stable, testing, unstable ver http://www.es.debian.org/releases/ ), en este caso nos basaremos en un replica parcial a partir de la arquitectura i386 y la versión testing.

  • Elegir el sitio origen de donde se generara la replica por ejemplo ftp.debian.org.

  • Conexión de Banda Ancha a Internet (Cable,Aba ú otra..) igual o superior a los 256 Kbps.

  • Espacio suficiente en disco duro para almacenar la replica, por lo menos de 6 a 8 GB por versión.

  • Servicio Web Apache para compartir la replica.

Obtener e Instalar el Software Necesario.

Para crear y mantener actualizado nuestra replica utilizaremos un script escrito en perl llamado debmirror y lo instalaremos de la siguiente manera:

apt-get install debmirror


al ejecutar esta instrucción nos hará una pregunta si bajar e instalar dicho paquete y a su vez nos informara las dependencias con que cuenta el paquete y las instalara de forma automática.

Ejecución del la Actulizacion.

  • Sito Destino donde se almacenara la replica = /var/www/debian

  • Sitio origen de la replica = ftp.debian.org

  • Arquitectura que deseamos replicar = i386

  • Versión que deseamos replicar = testing ó sarge

  • Secciones a replicar = main, contrib, non-free

Teniendo estos parámetros ejecutamos actualización de la replica de la siguiente manera:

debmirror /var/www/debian --host=ftp.debian.org --root=/debian
--dist=testing --section=main,contrib,non-free --arch=i386
--progress --method=http --nosource --ignore-release-gpg


En este momento ya podemos bajar y mantener actulizada nuestra replica.

Ejecución de las Actualizaciones Automáticamente.

Para ejecutar diariamente la actualización de la replica basta con realizar este script con cualquier editor de texto y almacenarlo en el directorio de root con el nombre updatemirror.

#!/bin/sh
echo "Script de Actualización Automatica de MIRROR de GNU/DEBIAN"
echo "Verificando..."
st=`ps cax |grep -c "debmirror"`
echo "Analizando Ejecucion..."
if [ $st -eq 0 ];then
echo "Ejecutando Actualizacion...."
debmirror /var/www/debian --host=ftp.debian.org --root=/debian
--dist=testing --section=main,contrib,non-free --arch=i386
--progress --method=http --nosource --ignore-release-gpg
else
echo "La Actualización esta en proceso..."
fi


Cambiar los permisos de fichero para poder ejecutarlo.

chmod u+x updatemirror


Colocarlo en el demonio de ejecución de programas Cron a las 11:00pm todos los días.

crontab –e


y escribimos;

0 23 * * * /root/updatemirror


Configuración de las Estaciones.

Supongamos que el Servidor que contiene la replica posee la dirección ip 192.168.0.1

Editar el fichero /etc/apt/sources.list y agregar la siguiente linea:

deb http://192.168.0.1/debian testing main contrib non-free


Ejecutar el comando:

apt-get update;apt-get upgrade