Ir al contenido principal

Entradas

Mostrando las entradas con la etiqueta linux

Script para habilitar NAT con iptables en Linux

Este script nos habilita el Network Address Translator en un servidor con Linux. Solo tenemos que cambiar "eth1" por nuestra interface externa y 192.168.0.0/24 por nuestra red interna. Podemos agregar estas líneas a nuestro rc.local o llamarlo al final de nuestros scripts de inicialización. ------- nat.sh ---------------------------------------------- #!/bin/bash ifup eth1 echo 1 > /proc/sys/net/ipv4/ip_forward iptables -F iptables -F -t nat iptables -A POSTROUTING -t nat -s 192.168.0.0/24 -d 0/0 -j MASQUERADE ------- nat.sh ----------------------------------------------

Bash, Procesar Archivo Linea por Linea

Tarde o temprano una tarea simple que se vuelve repetitiva tiende a volverse una molestia, por lo que normalmente nos enfrentamos a la necesidad de automatizarlas usando scripts, en este post vamos a tratar un caso muy simple, queremos ejecutar un comando usando como parámetro cada linea de un archivo de configuración (una forma muy básica y primitiva de parametrizacion) básicamente vamos a abrir un archivo, iterar sobre cada linea y aplicar "echo" para mostrar esa linea en la consola. #! /bin/bash while read line do touch $line ".txt" done < "config.cfg" entre las consideraciones están 1) crear el archivo de configuración touch config.cfg echo -e "line1\nline2\nline3" > config.cfg cat config.cfg con el comando cat deberiamos de ver la siguiente salida line1 line2 line3 2) crear el script para procesar el archivo de configuracion nano script.sh  Agregar lo siguiente #! /bin/bash while read line...

Analizador Lexico hecho a mano en C++ QT 4.5

este ejemplo demuestra la implementacion de un analizador lexico a mano en C++, el lenguaje es muy simple, consiste en los elementos basicos de una calculadora, numeros enteros, +, -, *, / y espacios en blanco, ademas incluye el manejo de errores lexicos y contador de lineas y caracteres para localizar cada token en el archivo de entrada.  el dfa utilizado en este ejemplo utiliza un estado final para cada token aunque no sea el dfa minimo, porque esto permite reconocer los tokens en funcion del estado final asociado, esto es mapear un estado final para cada token. y la representacion tabular del automata el ejemplo fue desarrollado en Debian GNU/Linux usando QT4.5 y su entorno de desarrollo QTCreator, aunque el codigo propio del analizador es C++ puro, si se utilizaron clases de la libreria QT para leer el archivo de entrada. codigo fuente ejemplo de salida del analizador TOKEN [100]     NAME[NUMBER]    LINE NUMBER[1]   ...

Sincronizar Procesos con Semáforos en Linux

Este problema fue planteado como practica en el curso de Sistemas Operativos 1 de la carrera de ingeniería en Ciencias y Sistemas de la Universidad de San Carlos de Guatemala, el problema básicamente es coordinar a un grupo de turistas para que puedan cruzar un puente, el cual tiene un limite en el peso soportado, para esto algunos turistas deben esperar en la entrada del puente hasta que el peso libre sea suficiente para soportarlos. la implementacion se realizo con semáforos del sistema y memoria compartida, los elementos básicos de IPC (Comunicación Entre Procesos). se utilizaron las librerías #include <sys/ipc.h> #include <sys/shm.h> #include <sys/sem.h> y las funciones semop ftok shmget shmat semget semctl shmdt shmctl Descargar Código Fuente

Salto Incondicional JMP en Gnu Assembler (GAS)

Los saltos son la forma básica de control de flujo en lenguaje ensamblador, un salto acompañado de una etiqueta de destino, nos permite llevar al procesador a ejecutar en cualquier región de nuestro código. en este ejemplo, veremos la forma mas básica de salto, el salto incondicional, el cual modifica el flujo del programa, y lo dirige hacia una etiqueta definida. como primer paso para entender la forma en la que actúa una instrucción "jmp", vamos a usar un pequeño ejemplo, que imprime dos mensajes en pantalla, uno después de otro en una secuencia simple . text . global _start _start: # write msg movl $len , % edx movl $msg , % ecx movl $1 , % ebx movl $4 , % eax int $ 0x80 # write msg1 movl $len1 , % edx movl $msg1 , % ecx movl $1 , % ebx movl $4 , % eax int $ 0x80 # exit movl $0 , % ebx movl $1 , % ...

Lexical Analyzer in C++ by Hand

this example show how to implement a lexical analizer by hand, using the finite state machine. also includes error handling, this lexical analizer was developed on Debian GNU / Linux 5, using the QT Creator IDE Source Code

Ensamblador : Hola Mundo en Linux Debian Lenny con NASM

En este post quiero mostrar como realizar un programa simple "hola mundo" en lenguaje ensamblador, en el sistema operativo Linux Debian Lenny, usando el ensamblador NASM como primer paso es necesario instalar nasm, en Debian esta tarea es trivial, y se reduce a ejecutar como root el comando apt-get install nasm una vez completa la instalación de nasm, pasamos al código fuente del ejemplo section . data     holaStr: db 'Hola Mundo!' , 10     holaSize: equ $ - holaStr section . text global _start _start: mov eax , 4 ; llamada del sistema 'write' identificador 4 mov ebx , 1 ; descriptor de archivo 1 = pantalla mov ecx , holaStr ; cadena a mostrar mov edx , holaSize ; longitud de la cadena int 80h ; invocar al kernel ; Terminate program mov eax , 1 ; llamada del sistema 'exit' mov ebx , 0 ; codigo...

Guia de Instalacion de Gentoo

Guía visual de instalación de Gentoo Linux en una maquina virtual (Sun VirtualBox), con los pasos necesarios para compilar el kernel a mano, configuracion del cargador de arranque Grub, instalación del servidor X y por ultimo la instalacion de KDE 3.5 Descargar