Copy Link
Add to Bookmark
Report
Black Lodge - Revista Digital No. 2
*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*
P010101b 01 1010 d0101010 01 01
01 100 10 010101 10 0 10 10
10 00 01 10 10 10 01 01
01010d 10 01 01 01 10.01
10101P 01 10101010 10 0101.
01 00 10 01010101 01 10 10
10 010 01 01 10 10 10 0 01 01
d101010d 10101010 01 01 b1010101 10 10
xx .xxxxxx. xxxxxxx. .xxxxxx. .xxxxxx.
xx xxxxxxxx xx .xx xxxxxxxx xxxxxxxx
xx xx xx xx xx xx xx
xx xx xx xx xx xx :xxx xxxx:
xx xx xx xx xx xx :xxx xxxx:
xx xx xx xx xx xx xx xx
xx xx xxxxxxxx xx .xx xxxxxxxx xxxxxxxx
xxxxxxxx .xxxxxx. Xxxxxxx. .xxxxxx. .xxxxxx.
M A G A Z I N E
*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*
Revista Digital No. 2
Sitio Oficial de Descarga:
http://blacklodge.8k.com
Distribuidores y Sitios de Promocion:
http://www.vanhackez.com
http://www.dreamers.com/fondoperdido
CONTENIDO:
---EDITORIAL---
---UNIX---
---USANDO EL EDITOR DE TEXTOS vi---
---EL REGISTRY---
---PROGRAMACION DEL SHELL---
---UN SHELL USANDO RCP---
---ECHELON--- Fuente: www.AcidKlan.org
---EDITORIAL---
Bienvenidos a la segunda Edicion de Black Lodge. Ahora veremos una
introduccion a UNIX, donde aprenderemos lo mas basico. Recuerdo hace algun
tiempo en que veia a unix como algo para locos, lo que me hace deducir
dos cosas:
1.- Que no es para locos, no conocia bien el unix.
2.- Me he vuelto loco y por eso me gusta tanto.
Lo importante es que creo que son de las cosas mas maravillosas que se han
inventado, junto con el C, Perl, Linux, etc. Es importante que un maestro
de unix fomente el interes por el estudio profundo de este S.O., pero como
me imagino que ningun maestro va a leer esto, sino mas bien alumnos o
ex-alumnos aburridos de las tonterias que pasan en las universidades, vamos
a trabajar juntos en esto para logar un mundo informatico mejor.
Para completar esta edicion, he puesto un articulo para tratar el editor de
textos "vi" que puedes usar en cualquier "unix". La ventaja de este editor
es que la mayoria lo tiene por default (incluso maquinas muy viejas).
Tambien incluyo una guia para programar en el shell de unix, algo muy
basico para cualquier "hacker", donde tambien hay otro articulo para usar
el "rcp" en un shell, algo muy interesante tambien.
Para los usuarios de Windows (hay que aceptar que lo usamos, a veces aunque
no quieras) va una introduccion al Registry, para los que no tengan ni idea
ni se habian imaginado que existia. Y por ultimo un articulo que me encontre
en la Ezine de AcidKlan sobre "Echelon", bastante interesante.
---UNIX---
Sus elementos principales son:
-KERNEL. Es el nucleo del sistema, realliza las tareas de mas bajo nivel,
como acceso a dispositivos.
-SHELL. Es el interprete de comandos, sirve como interfaz entre el
sistema y los usuarios; ejecuta comandos y programas.
Tambien contiene diversos programas y aplicaciones como:
compiladores, herramientas de edicion, soporte de comunicaciones,
programas de administracion, utilidades y juegos.
Al ingresar al sistema se pide introducir un login o nombre de usuario
de sesion de trabajo. Despues de eso, se requiere un password o palabra
de paso, la cual no se imprime en pantalla. Enseguida, aparecera el
prompt, que es un signo de $ para usuarios normales y un # para el
administrador (root). Ese prompt indica que la maquina esta lista para
recibir comandos.
El Login y el Password pueden ser de mas de 8 caracteres y son sensitivos
si se les escribe en mayuscula o minuscula.
Para terminar una sesion en UNIX, se teclea "exit" o se oprimen las
teclas "ctrl" + "d".
Cada usuario tiene atributos caracteristicos, uno de ellos son los
grupos, quienes tienen caracteristicas generales en conjunto.
Para ver al grupo al cual pertenecemos, se ejecuta el comando "id"
el cual mostrara un resultado similar a este:
$id
uid=201(bancos) gid=1(users)
Lo que nos dice que somos el usuario (user id) bancos y estamos
en el grupo (group id) users.
Otro aspecto configurable en las cuentas de usuario es el
directorio asignado por default tras hacer login, por ejemplo
"/user/bancos".
Para conocer la ruta del directorio donde nos encontramos
trabajando, utilizamos el comando pwd (Print Working Directory).
Para borrar un caracter anterior, oprimimos las teclas "ctrl" + "h".
Para conocer a los usuarios que estan conectados en ese momento
escribimos el comando "who", (con "w" tambien nos lista los
usuarios activos, pero no con los trabajos que esta realizando)
o si queremos saber en que usuario estamos escribimos el comando
"who am i" (quien soy yo) donde nos muestra los datos de la
conexion, ya que con "whoami" solo nos dice quienes somos.
who is on se utiliza para ver quien esta logeado.
Para saber el usuario con el que iniciamos escribimos "logname".
Algunos comandos basicos de Unix:
cd = entrar a un directorio.
rmdir = remueve un directorio.
mkdir = crea un directorio.
rm = borra un archivo.
write = Se usa "write nombre" y permite chatear con alguien, para
finalizar el chat presiona CTRL-D.
mail = Se usa "mail persona", pones todo el texto que quieras y
oprimes CTRL-D para mandarlo.
wall = Para mandar un mensaje a todos los que estan logeados,
si le mandas un archivo muy grande al operador lo puedes
llegar a echar.
cat = Se usa "cat archivo" para ver el contenido de cualquier
archivo.
su = Si estas en la cuenta root "su"(super user) te permite
ser el administrador.
pwd = Te imprime en pantalla el directorio actual.
man = Muestra una pagina del manual. Se usa "man nombre_de_comando"
Es un programa de ayuda.
finger = Imprime informacion basica de una ceunta. Se usa:
"finger nombre_de_usuario".
cc = Para compilar un archivo de C. se usa "cc caos.c"
c = Conecta a un host.
set = Elegir parametros PAD.
d = Desconectar.
hangup = Cuelga.
En UNIX se dice que todo son archivos, de los cuales existen varios tipos:
- Los normales, archivos de texto, etc..
- Directorios
- Archivos especiales.
- Un archivo del primer tipo podria serr el mensaje del dia que aparece
al iniciar sesion, es el archivo "/etc/motd" (message of the day).
Para ver el mensaje tecleamos:
$cat /etc/motd
"cat" se utiliza para desplegar cadenas.
- Los directorios contienen archivos. LLos direcorios mas comunes de
unix son: /etc, /bin, /usr, /dev, /mnt, etc.
Existen varias formas de obtener listados de archivos dentro de los
directorios.
l
Nos muestra un listado del directorio en el que se encuentre.
ls
Nos muestra una lista por columnas, sin caracteristicas.
ls ..
Con dos puntos nos lista el directorio antecesor.
ls -a
Nos muestra todos los archivos en ese directorio, incluyendo los ocultos.
La letra "a" hace referencia a "all" que significa "todos".
ls -F
Nos muestra los directorios con una diagonal al final para poderlos
distinguir.
ls -rt
Muestra un listado de archivos ordenados por fecha.
ll (ls -l)
Nos muestra archivos en el directorio con sus caracteristicas en formato
largo. La letra "l" nos hace referencia a "large" que significa "largo".
Por ejemplo:
$ls -l
-rw-r--r-- 1 bancos users 254 Mayy 5 10:07 mayoreo
drw-r--r-- 1 inventarios users 6584 May 5 11:07 tienda1
drw-r--r-- 1 inventarios users 9451 May 5 11:07 tienda2
drw-r--r-- 1 inventarios users 1259 May 5 11:07 tienda3
-rwxr--r-- 1 bancos users 100 Mayy 5 10:07 zips
Donde observamos lo siguiente:
La letra "d" al principio del listado, nos dice que es directorio
(el guion significa nulidad de esa caracteristica, por lo tanto,
el primero se trata de un archivo).
Las siguientes 9 letras son 3 grupos de 3 permisos que existen
para cualquier archivo y su uso, de acuerdo a lo siguiente:
r=permiso de solo lectura
w=permiso de escritura
x=permiso de ejecucion
Los 3 primeros son permisos de usuario (el que crea ese archivo),
los siguientes 3 son permisos de grupo (donde esta el creador de
tal archivo) y los ultimos 3 son para todos los demas.
Despues se nos muestra el nombre del usuario o propietario del archivo,
el grupo en el que pertenece, el tamaÒo en bytes del contenido del
archivo, la fecha y hora de creacion o ultima actualizacion y el
nombre del archivo.
Para cambiar los permisos se utiliza el comando "chmod" en
conjunto de 3 numeros octales que representan los valores de los
permisos como sigue:
4=Permiso de lectura
2=Permiso de escritura
1=Permiso de ejecucion
Para darle el permiso maximo a un archivo tecleamos:
$chmod 777 <archivo>
Para cambiar usuario o propietario usamos el comando "chown".
$chown pancho <archivo>
Para cambiar un grupo usamos el comando "chgrp".
$chgrp admins <archivo>
- Los archivos especiales son los usadoos para manejar
los dispositivos como discos e impresoras. Asi, nos referimos
al archivo encargado de cada tarea en lugar de referirnos a un
dispositivo en si.
Por ejemplo:
/dev/lp0, /dev/lp1 - Primera y segunda impresora en paralelo.
/dev/tty00, /dev/tty01, etc - Terminales o modems en conexion serial.
/dev/eth0 - Primera placa ethernet
cp
Copia un archivo a otro, ya sea con otro nombre o en otra direccion.
mv
Mueve un archivo. Saca una copia, como el anterior, pero elimina
el original.
rm
Borra cualquier archivo o directorio. Se pueden utilizar los
comodines para borrar varios archivos caracteristicos de una sola
vez, por ejemplo:
"rm tarea*"
Borra todos los archivos que empiecen con la palabra tarea.
"rm tarea*.txt"
Borra solo archivos de texto que empiecen con la palabra tarea.
"rm *"
Borra todo el contenido de ese directorio, hay que tener cuidado
porque el borrado seria inmediato y sin pedir confirmacion.
find
Encuentra archivos o directorios y lleva varios parametros
referentes a lo que buscamos.
find / -type f -print
Nos da un listado de TODOS los archivos del disco.
find / -type d -print
Nos da un listado de TODOS los directorios del disco.
find / -atime +30 -print
Buscar todos los ficheros y directorios que tengan mas de
30 dias de antiguedad.
La shell es quien interpreta los comandos que el usuario proporciona,
ya que con ella interactuamos con UNIX, asi como con los archivos y
dispositivos de la computadora.
Existen patrones para generar nombres de archivos que tengan algo en
comun sin tener que teclearlos todos explicitamente, aun desconociendo
parte de su nombre.
Las reglas de generacion de patrones son :
* Vale cualquier cadena de caracteres.
? Vale un caracter cualquiera.
[ ] Vale cualquiera de los caracteres que coincida con los que estan
entre corchetes.
Vamos a ver un ejemplo. En un directorio cualquiera, tenemos los archivos:
compras1000, compra1, compra2, banco, sucursal, comerciales, cetes.
Si tecleamos:
$ls c*
cetes
comerciales
compras1000
compra1
compra2
Para listar las compras, escribimos:
$ls compra*
compras1000
compra1
compra2
De igual manera:
$ls compra?
compra1
compra2
Para elegir entre opciones:
$ls compra[12]
Cuando la shell lanza un programa, se crea un nuevo proceso en UNIX
y se le asigna un numero entero (PID) entre el 1 y el 30.000, del cual
se tiene la seguridad que va a ser unico mientras dure la sesion.
Lo podemos ver ejecutando el comando "ps", el cual nos da los procesos
activos que tenemos asociados a nuestro terminal.
Podemos utilizar algunas variantes del comando "ps" para ver que procesos
tenemos en el equipo :
ps : muestra el numero de proceso (PID), el terminal, el tiempo en
ejecucion y el comando. Solo informa de nuestra sesion.
ps -e : de todas las sesiones.
ps -f : full listing : da los numeros del PID, del PPID (padre), uso
del procesador y tiempo de comienzo.
ps -j : da el PGID (numero de grupo de los procesos - coincide
normalmente con el padre de todos ellos).
Para matar un proceso (en caso de que se quede congelada la terminal)
usamos el comando "kill" en conjunto de un numero de se~al mas el numero
de proceso (que es asignado por el shell y lo obtenemos con "ps").
Los numeros de se~al son :
-15 : TERM o terminacion. Se manda paraa que el proceso cancele
ordenadamente todos sus recursos y termine.
-1 : corte
-2 : interrupcion.
-3 : quit
-5 : hangup
-9 : kill : la mas energica de todas ppero no permite que los procesos
mueran ordenadamente.
Por ejemplo:
#kill -9 24587
ENTRADAS Y SALIDAS. INTERCONEXION
Unix abre 3 tipos de archivos predeterminados al iniciar la sesion:
1.- La entrada Estandar
2.- La salida Estandar
3.- El error Estandar
La entrada es de donde un comando obtiene su informacion de entrada;
por defecto se halla asociada al teclado del terminal.
La salida estandar es donde un comando envia su resultado; por defecto
se halla asociada a la pantalla del terminal; el error estandar
coincide con la salida estandar, es decir, con la pantalla.
A efectos de modificar este comportamiento para cualquier fin que
nos convenga, la shell emplea 4 tipos de redireccionamiento :
< Acepta la entrada desde un archivo.
> Envia la salida estandar a un archivo.
>> AÒade la salida a un archivo existente. Si no existe, se crea.
| Conecta la salida estandar de un programa con la entrada estandar
de otro.
Ejemplos:
$ls > files
Ahora el archivo files contiene el listado del directorio actual.
$ cal 1996 | lp
Se imprime un calendario de 1996 en la impresora.
---USANDO EL EDITOR DE TEXTOS vi---
Si bien este editor de texto es realmente dificil, al dominarlo
tendremos una herramienta de gran compatibilidad para Unix, asi
que aqui veremos las instrucciones mas importantes.
Para iniciar un documento escribimos:
$vi documento
Veras que aparecen unas tildes y al final aparece:
"documento" [New file]
Puedes agregar parametros al abrir un archivo:
-R Abre el archivo como solo lectura para evitar cambios no deseados.
-r Recupera un archivo despues de una caida, se necesita ser Owner.
-l Abre la opcion de Editor LISP.
Existen dos modos para trabajar, el de comando
y el de insercion. Al iniciar estamos en el
primero, para pasar a modo insercion oprimimos
la letra "i".
Siempre que se desee regresar al modo comando tecleamos "esc",
incluso si estamos en el y no estamos seguros.
Comandos
i - inserta texto donde esta el cursor
I - inserta texto al inicio de la linea
u - deshace el ultimo cambio
U - deshace todos los cambios
dd - borra la linea donde esta el cursor
dw - borra la palabra donde este el cursor
x - borra el caracter donde esta el cursor
yy - copia una linea
p - pega una linea copiada
a - inserta un caracter despues del cursor
A - inserta texto al final de la linea
o - insertar texto pasando a la linea de abajo
O - insertar texto pasando a la linea de arriba
R - Sustituye texto
~ - Cambia de minuscula a mayuscula o visceversa
. - Repite el comando anterior
w - Moverse a la siguiente palabra
b - Moverse a la palabra anterior
h - Mueve el cursor a la izquierda
j - Mueve el cursor abajo
k - Mueve el cursor arriba
l - Mueve el cursor a la derecha
0 - Mueve el cursor al inicio de la linea actual
$ - Mueve el cursor al final de la linea actual
G - Mueve el cursor al final del archivo
ZZ - Guarda los cambios y sale del editor
:wq - Guarda los cambios y sale del editor
:w - Solo guarda los cambios sin salir
:q - Sale del editor cuando no hubo cambios
:q! - Sale del editor sin guardar cambios
ctrl + b - Sube la pagina
ctrl + f - Baja la pagina
ctrl + d - Sube media pagina
ctrl + u - Baja media pagina
COPIAR VARIAS LINEAS
:N_Linea_Inicial,N_Linea_Final co N_Linea_aCopiar
Por ejemplo:
:10,20 co 40
Para esto, la linea 40 debe existir.
Se insertara en la linea a partir de la 41.
MOVER VARIAS LINEAS
:N_Linea_Inicial,N_Linea_Final m N_Linea_aCopiar
ELIMINAR VARIAS LINEAS
:N_Linea_Inicial,N_Linea_Final>
BUSQUEDA DE CARACTERES
/caracter - Busca desde el principio al final un caracter.
?caracter - Busca desde el final al principio un caracter.
n - Busca el siguiente.
N - Busca el anterior.
/*caracter - Busca el caracter al inicio de cada linea.
/$caracter - Busca el caracter al final de cada linea.
/[a-z]*la - Busca cualquier cadena que empiece desde la "a" a la "z"
y termine con la palabra "la".
/.aq - Busca cualquier cadena que sea o contenga el texto "aq".
:e - Abre otro archivo para editar, saliendo del anterior.
Por ejemplo:
:e archivo2.txt
:r - Inserta el contenido de un archivo a partir del cursor.
Por ejemplo:
:r archivo3.txt
:r! - Inserta la salida de un comando del shell.
Por ejemplo:
:r! ls -F
:! - Ejecuta un comando del shell sin insertar y regresa al vi.
Por ejemplo:
:! ls -F
:shell - Vamos al shell sin cerrar el vi, quedando como
segundo plano, para regresar escribimos exit.
---EL REGISTRY---
El Registry es una base de datos usada para guardar configuraciones
y opciones para Windows de 32 bits (95, 98 y NT).
Contiene informacion de configuraciones de hardware, software,
usuarios y preferencias en la pc.
Cualquier cambio en el panel de control, asociacion de archivos,
instalacion de software, etc. se ve reflejado y es guardado en
el Registry, el cual contiene una base de datos con la informacion
necesaria para el funcionamiento correcto de los programas.
Windows 95 y 98 guardan los archivos de actualizacion en la carpeta
Windows en dos archivos ocultos, el user.dat y el system.dat.
Para editar el Registry, se utiliza el editor de registro (regedit)
que se encuentra en el directorio Windows.
Al ejecutar dicho programa nos encontramos con dos secciones, a la
izquierda se encuentra un arbol con folders, los cuales contienen
todos los datos de configuracion y a la derecha aparecen los datos
de esos folders.
Cualquier cambio repercutira en la configuracion a tal grado que
mover arbitrariamente los valores puede provocar que Windows no
inicialice la proxima vez, y si no se sabe hacer los cambios
necesarios, se tenga que reinstalar todo el sistema operativo.
---PROGRAMACION DEL SHELL---
Una variable de entorno en la shell es una referencia a un valor.
Se distinguen dos tipos : locales y globales.
Una variable local es aquella que se define en el shell actual y solo
se conocera en ese shell durante la sesion de conexion vigente.
(Acuerdate por ejemplo de la memoria RAM y ROM, es algo similar, ya
que las variables globales se guardan en disco y las locales en la
memoria, perdiendose al liberarse esta).
Una variable global es aquella que se exporta desde un proceso activo
a todos los procesos hijos.
Para crear una variable local:
# nueva="CUALQUIER COSA"
Para hacerla global
# export nueva
Para ver que variables tenemos:
# set
El valor de una variable se referencia anteponiendo a su nombre el
signo dolar "$". Utilizando el comando "echo", que imprime por la salida
estandar el contenido de algunas de estas variables.
# echo $TERM
hp
Es importante poner el signo $, de lo contrario:
# echo TERM
TERM
De esta forma solo le decimos que imprima en pantalla la palabra TERM,
que es algo que se supone no deseabamos.
Para eliminar una variable se utiliza el termino "unset" <variable>.
Algunas de las variables usadas por el sistema o por programas del
mismo son:
HOME: Directorio personal . Usado por el comando "cd",
se cambia aqui al ser llamado sin argumentos.
LOGNAME: Nombre del usuario con el que se ha comenzado la sesion.
PATH: Lista de rutas de acceso , separadas por dos puntos : y donde
una entrada con un solo punto identifica el "direcorio actual".
Son validas asignaciones como:
# PATH=/bin:/usr/bin:/usr/local/bin:.
PS1: Simbolo principal del indicador de "preparado" del sistema.
Normalmente, su valor sera # o $.
TERM: Tipo de terminal.
BASEDATO: La Base de Datos que se utiliza.
Podemos ver como se inicializan las variables consultando los ficheros
de inicializacion. Estos ficheros son :
/etc/profile: Fichero de inicializacion global. Significa que, tras
hacer login, todos los usuarios pasan a traves del mismo.
Inicializa variables como PATH o TERM.
<directorio usuario>/.profile: Fichero particular , reside en
el "home directory" del usuario en cuestion.
Es, por tanto, particular
para cada uno de ellos y es aqui
donde podemos configurar cosas tales
como que les salga un menu al entrar,
mostrarles el correo, etc.
# echo "Oye , $LOGNAME pulsa \"INTRO\" para seguir"
# echo "Y estas en el terminal : `tty`"
La shell, ademas de interpretar y ejecutar comandos,
tiene primitivas de control de ejecucion de programas tales como
sentencias condicionales y bucles.
Ejemplo de una shell-script llamada "prueba.sh":
echo "La escript se llama $0"
echo "Me han llamado con $# argumentos"
echo "El primero es $1"
echo "Y todos son $*"
echo "Hasta luego locoooo!"
Los comandos se separan por lineas, y se van ejecutando de forma
secuencial. Podemos poner varios comandos en la misma linea
separandolos por punto y coma ";".
Ejemplo para cambiar el tipo de terminal:
echo "Por favor escriba que terminal tiene :"
read TERM
echo "Ha elegido --- $TERM"
Si la ejecutamos como:
# tipoterm
al volver al # NO se ha modificado la variable!.
Para que SI la modifique , se llamaria como:
# . tipoterm
Hay que suponerse al punto como un "include",
que en vez de crear un proceso hijo "expande" el codigo dentro de
nuestra shell actual.
Ejemplo para practicar el comando "read".
echo "Como te llamas?"
read nom
echo "Hola $nom"
La sintaxis de la sentencia de condicion if es :
if <condicion>
then
..... comandos ....
else
..... comandos ....
fi
Posibles condiciones y su sintaxis:
* (Ojo con los espacios en =)
if [ <variable> = <valor> ] : variable es igual a valor.
if [ <variable> != <valor> ] : variable es distinta a valor.
if [ <variable -eq <valor> ] : variable es igual a valor.
La variable debe contener numeros.
En Este caso , valen las comparaciones siguientes:
-eq : Igual (equal)
-ne : Distinto (not equal)
-ge : Mayor O igual (Greater or equal)..
-le : Menor O igual (Less or equal).
-lt : Menor que (Less than).
-gt : Mayor que (Greater than).
if [ -f <fichero> ] : Existe <fichero>.
if [ -d <fichero> ] : Existe <fichero> y es un directorio.
if [ -s <fichero> ] :Existe <fichero> y tiene un tamaÒo mayor de cero.
if [ -x <fichero> ] : Existe <fichero> y es ejecutable.
En el campo <condicion> vale escribir comandos, los cuales se
ejecutaran y el valor de la condicion dependera de dos factores:
* Retorno 0 del comando = VERDADERO.
* Retorno != 0 del comando = FALSO.
Ejemplo de esto ultimo seria el siguiente programa:
if grep jose /etc/passwd
then # retorno del comando -grep- ha sido CERO
echo "Jose esta registrado como usuario"
else # retorno del comando grep NO ha sido CERO.
echo "Jose NO esta registrado como usuario"
fi
Ejemplos: minimenu.sh
clear # borrar pantalla
echo "1.- Quien esta por ahi ?"
echo "2.- Cuanto disco queda ?"
echo "3.- Nada. Salir. "
echo "Elige una opcion : \c"
read opcion
case "$opcion" in
1) who ;;
2) df;;
3) echo "Adios";;
*) echo "Opcion $opcion Es Incorrecta" ;;
esac
El bloque entre "for" y "done" da tantas vueltas como elementos existan
en <lista>, tomando la variable cada uno de los elementos de <lista>
para cada iteracion. En esto conviene no confundirlo con los
for... next existentes en los lenguajes de tipo algol
(pascal, basic ...) que varian contadores.
Supongamos un programa que contenga un bucle for de la siguiente manera:
for j in rosa antonio
do
echo "Variable = $j"
done
Y la salida que produce es :
Variable es rosa
Variable es antonio
Explicacion:
el bloque ha efectuado dos iteraciones (dos vueltas).
Para la primera, la variable -j- toma el valor del primer
elemento -rosa-, y para la segunda, -antonio-.
En el campo <lista> podemos sustituir la lista por patrones de archivos
para la shell, la cual expande dichos patrones por los archivos
correspondientes; de tal forma que al escribir:
for j in *
la shell cambia el * por todos los ficheros del directorio actual.
Por tanto, el siguiente programa :
for j in *
do
echo $j
done
Equivale al comando ls sin opciones - merece la pena detenerse un momento
para comprender esto.
Se puede tambien poner en el campo <lista> comillas de ejecucion
junto con cualquier comando; la construccion:
for j in `cat /etc/passwd`
Por ejemplo, ejecutaria tantas iteraciones como lineas tuviese
dicho archivo, y para cada vuelta, la variable -j- contendria
cada una de las lineas del mismo. Por tanto, valdrian expresiones
como - for j in `who` - para procesar todos los usuarios activos
en el sistema, - for j in `lpstat -o ` - para procesar todos los
listados pendientes, o - for j in `ps -e` - para tratar todos los
procesos de nuestra sesion.
Aqui las iteraciones se producen mientras que la <condicion> sea
verdadera ( o retorno = 0 ). En caso que sea falsa ( o retorno != 0 ),
el bucle termina.
Ejemplo1:
while [ "$opcion" != "3" ]
do
echo "Da una opcion"
read opcion
done
Ejemplo2:
echo "Escribe cosas y pulsa ^D para terminar"
while read cosa
do
echo $cosa >> /tmp/borrame
done
echo "Las lineas que has escrito son :"
cat /tmp/borrame
Explicacion : El comando -read- devuelve un retorno VERDADERO (cero)
mientras que no se pulse el caracter EOF ( ^D) ;
por tanto, el bucle esta indefinidamente dando vueltas hasta dar ese
caracter.
La sentencia expr evalua una expresion y la muestra en la salida estandar.
La expresion normalmente consiste de dos numeros o variables de contenido
numerico y un operador de suma, resta, multiplicacion o division.
Son validos los comandos siguientes:
expr 100 "+" 1 # saca en pantalla 101
expr 100 "-" 1 # saca en pantalla 99
expr 100 "/" 2
pepe=`expr 10 "*" 5` # y la variable pepe vale 50.
pepe=0
pepe=`expr $pepe "+" 1`
EJEMPLO:
cnt=0
while [ $cnt -lt 50 ]
do
cnt=`expr $cnt "+" 1`
echo "Vuelta numero $cnt"
done
El operador "OR" (||) ejecuta el primer comando,
y si el codigo de error del mismo es FALSO (distinto de cero),
ejecuta el segundo comando.
El operador "AND" (&&) ejecuta el primer comando, y si el codigo de
error del mismo es VERDADERO (igual a cero), ejecuta el segundo comando.
cd /home/basura && rm -f *
ls /home/basurilla || mkdir /home/basurilla
banner "hola" | lp && echo "Listado Mandado" || echo "Listado ha cascado"
set -v : Verbose.
Saca en la salida de error su entrada
(es decir, las lineas del script segun los va leyendo,
que no ejecutando, pues pirmero se lee y despues se ejecuta,
que esto es un interprete y no hay que olvidarlo).
set -x :Xtrace.
Muestra cada comando segun lo va ejecutando por la salida de
error, antecedido por un "+".
set -n :Noexec. Lee comandos, los interpreta pero NO los ejecuta.
Vale para ver errores de sintaxis antes de probarlo de verdad.
set -e :Errexit. Terminar la ejecucion inmediatamente si alguno de
los comandos empleados devuelve un retorno distinto de VERDADERO
( 0 ) y NO se evalua su retorno.
Tambien es importante saber que podemos hacer copias remotas con rcp
poniendo el host mas : y si es necesario la ruta de directorios.
---UN SHELL USANDO RCP---
Vamos a ver como podemos hacer un shell usando el comando
rcp (copia remota) que es muy util para la transferencia
de archivos entre varios servidores.
echo
echo
echo "SHELL PARA COPIAR INFORMACION ENTRE SERVERS"
echo
echo
echo "ESCRIBE EL ARCHIVO A COPIAR :\c"
read archivo
echo "PASANDO INFORMACION..."
clear
rcp xxx.xxx.xxx.xxx:/usr/box/$archivo /box/utilis
echo
echo
echo "Proceso terminado..."
echo
echo "Gracias"
echo
Vamos a la explicada... Primero los ecos, como se vio en el tema anterior,
imprimen texto en la pantalla.
El slash o diagonal invertida con la letra c, nos sirve para indicar que no
queremos que salte de linea, ya que al usar el echo, salta automaticamente
y no se ve muy estetico recibir la variable abajo.
Despues leemos la variable con la instruccion read, donde la variable
archivo recibe dicha informacion que usaremos despues.
Con rcp, copiamos de un server remoto a nuestro server o visceversa,
indicando la direccion IP (son las "x") o el alias (un nombre que representa
la direccion IP) junto con el directorio y el nombre del archivo (que en
este caso lo obtenemos del teclado) y le indicamos a donde lo vamos a
copiar y es todo...
---ECHELON---
Que es Echelon?
Una pinche gran oreja otros lo llaman el gran hermano, es un sistema que
fue desarrollado por la decada de los setentas y se encuentra formado por
E.U., Gran BretaÒa, Australia, Canada y Nueva Zelanda. Es toda una red
de espionaje mundial que puede interceptar cualquier medio de comunicacion.
Funciona con una gran red de computadoras que se encuentran conectadas con
siete estaciones en todo el mundo, y que filtra la informacion recopilada.
Los programas que tienen estas super computadoras permite reconocer teclas,
palabras, numeros, voces, etc, etc, etc...
Tambien Francia y Alemania se encuentran asociados, pero en menor cooperacion
El gran hermano fue hecha para avisar cuando se detectaran palabras claves
ejemplo:"terrorismo", "bomba", "presidente", "guerra", etc... y toda esa gran
informacion filtrandose cada minuto. Echelon tambien cuenta con una gran red
de satelites espias, asi que en media hora puede interceptar mil millones de
mensajes, la bases de echelon se encuentran muy bien escondidas en lugares
apartados y desolados, pero donde crean peque~as comunidades para sus
trabajadores.
Y su espionaje no es solo de tipo de seguridad nacional e internacional,
si no tambien empresarial.
Por eso varios grupos y algunas empresas empezaron a bombardear el sistema,
con palabras claves, tratando de desvordar el sistema, pero hasta ahora
no han logrado su objetivo.
Si viste la pelicula de "enemigo publico" y creias que eso solo era una
exageracion, pues ya vez que mucho es realidad, de hecho pues muchas personas
dicen que esta basada en un acto real de Echelon.
Asi que las empresas se quejaban de los crackers, y esta Echelon, el
parlamento Europeo, ya a puesto en juicio los actos de Echelon, pero si somos
realistas el principal aqui es E.U. y no creo que E.U. vaya a dejar el
proyecto Echelon, a lo mejor cambia de nombre, de equipo, de empleados,
pero va a seguir... y tienes garantia, de que solo en esos paises esta
pasando esto?
pues no, esto es mundial, cuando hablas por telefono, un fax... pues estas
siendo escuchado.
≠CONTRA QUIEN ES LA GUERRA CYBER-ELECTRONICA?!! contra los hackers? o
contra un neoimperio opresor, que mueve toda la informacion a su
conveniencia!!!...
fuente: http://www.AcidKlan.org
(yo lo copie de ahi, no me hago responsable si el articulo es de otro)
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*