Programacion Bajo Plataformas Abiertas Laboratorio 2 Daniel Méndez Zeledón A83911 Entrega extemporánea -15 Nota: 85 Primera Parte: Uso del shell en GNU/Linux GNU/Linux ofrece ciertas herramientas muy útiles en lo que respecta al direccionamiento de archivos. Cuando colocamos por ejemplo cd / y presionamos tab, la maquina nos permite escoger de entre los archivos y carpetas que estén en este directorio, en este caso en root. Asi mismo, para no copiar varias veces la misma instrucción, utilizando simplemente las teclas arriba o abajo, podemos navegar entre los comandos previamente utilizados. El historial de direcciones a su vez se puede obtener al presionar Ctrl+r. Lo siguiente que pusimos en práctica fue el uso de las variables de entorno. Las variables de entorno son comandos del shell que pueden ser utilizadas para desplegar o ejecutar algún comando que nosotros determinemos. $ echo $SALUDO $ SALUDO=hola $ echo $SALUDO $ bash $ echo $SALUDO $ exit $ export SALUDO=hola $ bash $ echo $SALUDO $ exit Al ejecutar el primer echo, se llama a la variable llamada SALUDO; como esta aun no tiene nada escrito, la siguiente línea que despliega es una línea en blanco. Luego se determina que la variable SALUDO va a tener asociado a hola, por lo que al ejecutar de nuevo el echo, desplegamos la palabra hola. Al hacer el comando bash, me traslado al terminal bash, ejecutamos de nuevo el echo pero no sale nada, esto es porque las variables de entorno son locales para cada shell. Es por esto que luego se hace un export, esto hace que la variable de entorno SALUDO se exporte a todos los shells durante la sesión, una vez que cierro el terminal, la variable se pierde. Seguidamente se cambia de nuevo a bash y se despliega ahora si la palabra hola al hacer el comando echo. El comando printenv permite observar todas las variables de entorno disponibles para ser llamadas, por lo que la variable SALUDO aun se puede observar, eso sin haber cerrado el terminal. Existe una forma de poder hacer que las variables de entorno que nosotros declaremos no se eliminen al cerrar el terminal, esto se hace simplemente modificando el archivo que contiene a las variables de entorno del shell. Con el comando gedit ~/.bashrc abrimos el archivo donde esta configurado el bash, aquí agregamos las variables que queramos como export SALUDO=hola y cada vez que la llamemos siempre va a estar en cualquiera de los shells, a pesar de que salgamos de la terminal. Luego practicamos el uso de los pipes, líneas de comandos que lo que hacen es que la salida de un comando sea la entrada de otro comando. A continuación se muestra ciertos comandos que utilizan los pipes: $ date > fecha.txt El comando date lo que hace es darnos la fecha actual, el simbolo > lo que indica es que va a guardar lo que se despliegue en date, y crear un documento llamado fecha.txt conteniendo a date. Cada vez que se ejecute el comando, se rescribe el documento. $ date >> fecha.txt Hace lo mismo que el comando pasado pero no reescribe el documento sino que lo concatena, agregando una línea extra de fecha. $ ls -l /etc/ > dir.txt Se genera una lista del directorio etc y se guarda en un archivo llamado dir.txt $ ls -l /bin/ > dir.txt Se genera una lista del directorio bin y se sobre escribe sobre el archivo ya existente dir.txt $ echo Hola Mundo! > hola.txt Lo que hace es que al desplegar la frase Hola Mundo! toma esa frase y la guarda en un archivo llamado hola.txt $ gzip < /etc/passwd > passwd.gz Este comando comprime el archive passwd del directorio etc en un archivo tipo gz llamado passwd. $ gzip -dc passwd.gz | less Descomprime el archive passwd pero se genera una lista de lo que se esta descomprimiendo, al agregarle el pipe, genera un scroll con el comando less que me permite navegar dentro de la lista de lo descomprimido si necesito ver algún archive presente en el comprimido que haya quedado fuera de visión por el tamaño de la pantalla. $ apt-cache search text editor | less Busca los programas y archivos que tengan la palabra text editor y genera una lista, el comando less permite generar de nuevo un scroll. $ cat /etc/passwd | grep root Concatena lo que haya en passwd y enlista la direccion de este archive concatenado. $ cat /usr/share/doc/gcc/copyright | wc Concatena lo que haya en copyright y el comando wc genera una linea para cada una de las direcciones que usamos, o sea para root, usr, share, etc. $ ls -l /etc/ | tee ls.txt La información de la lista generada por el comando ls –l sobre etc, es escrita en un documento de texto ls. Segunda Parte: Programación de tareas con cron Primero, editamos el crontab como usuario para que muestre la fecha cada minuto con el comando date >> /tmp/date, esto se hace editando el crontab con el comando crontab –e la cual despliega una ventana para que pueda ser editado. En este se puede especificar exactamente el minuto, hora, día del mes, mes y día de la semana que quiere que se ejecute asi como también el comando a ejecutarse para este caso sería el de la fecha para el cual se comprobó su efectivo funcionamiento esto pues al ser ejecutado con el comando sudo cat/tmp/date la fecha no se desplegaba instantáneamente, sino un minuto despues. Final mente se debe editar el crontab para que escriba “Esto es una prueba” en el archivo /root/prueba dentro de tres minutos, y luego cada jueves a esa misma hora. Abrimos la ventana para edición con crontab-e, se verifica la hora y se programa para que se ejecute dentro de 3 minutos y que escriba el texto con el comando "Esto es una prueba" > /root/prueba su funcionamiento se verifica viendo la fecha y hora en la terminal, se esperan 3 minutos y se ejecuta escribiendo en pantalla el texto especificado anteriormente.