¿como se hacen bucles en scripts?
El bucle For
for variable in lista_valores;
do
…....
…....
done
¿como me hago un bucle para que me
recorra todos los argumentos que me ha dado el usuario?
Con $@ contiene la lista de argumentos
(no incluye el nombre del programa, y empieza por 1, $0 contiene el
nombre del programa)
for ARG in $@;
do
echo $ARG
done
ARG ira tomando valores 1,2,3...
Otro ejemplo
for ARG in manolito pepito juanito
do
echo $ARG
done
En la primera vuelta la variable ARG
vale manolito
En la segunda vuelta la variable ARG
vale pepito
En la tercera vuelta la variable ARG
vale juanito
Hacer un script como el archivo lsl
lsl.sh -d directorio1 directorioN
lsl.sh -a
lsl.sh -ca
lsl.sh -ac
lsl | ls |
Lsl.sh -a | Ls -a -l (-ele) |
Lsl.sh -c (no tengo que mostrar la información | Ls -a -1 (-uno) |
Lsl.sh directorios1 directoriosn | Ls directorios1 dirctoriosn |
#!/bin/bash
ERROR=””
DIR=""
ARGUMENTO_A=""
ARGUMENTO_C=""
for
ARG in
$@
do
if
[
"$ARG"
= "-c"
]
then
ARGUMENTO_C="-1"
else
if
[
"$ARG"
= "-a"
]
then
ARGUMENTO_A="-a"
else
if
[
"$ARG"
= "-ac"
]
then
ARGUMENTO_C="-1"
ARGUMENTO_A="-a"
else
if
[
"$ARG"
= "-ca"
]
then
ARGUMENTO_C="-1"
ARGUMENTO_A="-a"
else
if
[
-d
$ARG ]
then
DIR="$DIR
$ARG"
else
ERROR=”$ERROR
$ARG”
fi
fi
fi
fi
fi
done
if
[
"ARGUMENTO_C"
= ""
]
then
ARGUMENTO_C="-l"
#MENOS
L PARA QUE MUESTRE DATOS EXTENSOS
fi
if
[
“$ERROR” = “” ]
ls
--color
$ARGUMENTO_A $ARGUMENTO_C $DIR
else
ECHO
“Argumentos no validos $ERROR” no son válidos”
exit
fi
Nota:
cuidado
con los espacios dentro de las comparaciones y las “” al copiar y
pegar
Ejercicio:
Hacer
un script que te haga una copia de seguridad de tus datos en el
servidor del progresor.
#!/bin/bash
tar
cfvz copia.bak.tar.gz
/home/julio/.codelite/julio/*
scp
copia.bak.tar.gz
julio@192.168.36.2:/home/julio/copia.workspace.tar.gz
tar
cfvz copia.src.tar.gz
/home/julio/src/*
scp
copia.src.tar.gz
julio@192.168.36.2:/home/julio/copia.src.tar.gz
El
problema de hacerlo asi es que tenemos que poner nuestra contraseña.
Solucion
para solo hacerlo una vez.
servidor | cliente |
Clave DSA: parte la tiene el cliente de la clave y es publica Despues de haber hecho el paso 1 tenemos que poner disponibles las clave publica en un solo directorio. Nos vamos al servidor: ssh julio@192.168.36.2 mkdir .ssh cat id_dsa.pub>>.ssh/authorized_keys (esta añadiendo al final del autorized_keys, el id_dsa.pub) Podemos tener varias claves publicas dependiendo si nuestro acceso es por distintos ordenadores. A partir de este momento, no nos pide la contraseña para entrar en el servidor. |
1º generar tus claves en tu ordenador: ssh-keygen -t dsa //genera las claves crear un fichero (.ssh/id_dsa) con nombre por defecto con las claves (ENTER) passphrase: sustituto de la contraseña, lo dejo vacio ya no me lo piede id_dsa: clave privada id_dsa.pub: clave publica La tenemos que llevar al mismo sitio del servidor. (copiar) scp .ssh/id_dsa.pub usuario@192.168.36.2:id_dsa.pub (si estamos en home), si estamos en directorio .ssh, ponemos: scp id_dsa.pub usuario@192.168.36.2:id_dsa.pub |
Clave RSA: mas antigua | |
No hay comentarios:
Publicar un comentario