Desenvolupament de Funcions pels Sistemes Informàtics
ASI-2
GNU/Linux
Ordre if (2a part). Ordre select.  Funcions dins d'arxius de guió. Ordre let
29/01/09

Ordre if (2a part). Ordre select. Funcions dins d'arxius de guió. Ordre let.

DOCUMENTACIÓ

1.- [  ] i [[  ]]: Pàgines 51 a 54 i pàgina 56 del document Advanced Bash-Scripting Guide.
2.- elif: Pàgines 54 i 55 del document Advanced Bash-Scripting Guide.
3.- ((  )): Pàgina 51, 57 i 58 del document Advanced Bash-Scripting Guide.
4.- Ordre if i operadors de comprovació i comparació  de fitxers i directoris: Pàgines 58 a 60 del document Advanced Bash-Scripting Guide.
5.- Ordre if i operadors de comparació de números sencers: Pàgines 61 i 62 del document Advanced Bash-Scripting Guide.
6.- Ordre if i operadors de comparació de cadenes de caràcters: Pàgines 62 i 63 del document Advanced Bash-Scripting Guide.
7.- Ordre if i operadors de composició de comparació (-o i -a): Pàgina  66 i 67 del document Advanced Bash-Scripting Guide.
8.- Ordre select:  Pàgines 157 i 158 del document Advanced Bash-Scripting Guide.
9.- Definició de funcions: Pàgines 387 a 390 del document Advanced Bash-Scripting Guide.
10.- Pas de pàrametres a funcions: Pàgines 391 i 392 del document Advanced Bash-Scripting Guide.
11.- Variables locals: Pàgina 401 i 402 del document Advanced Bash-Scripting Guide.
12.- Ordre let: Pàgines 187 i 189 del document Advanced Bash-Scripting Guide
13.- if amb ordres de linux --> if sense test. Pàgina 52

EXEMPLES

Exemple 1: Utilització de [  ], [[  ]]      Exemple 7: Funcions.
Exemple 2: Utilització de ((  )) Exemple 8: Pas de paràmetres.
Exemple 3: Exemple d'utilització de l'ordre elif Exemple 9: Variables locals dins de funcions.
Exemple 4: Ordre if i comparació/comprovació de fitxers i directoris. Exemple 10: Ordre let.
Exemple 5: Ordre if i composició de comparacions. Exemple 11: if amb ordres de linux i sense test, [ ]o [[ ]].
Exemple 6: Ordre select.

PRÀCTICA
1- Fes un script que permeti utilitzar if, elif i l'ordre if amb ordres que començant des de la interfície de xarxa eth0, i fins a la 3, intenti activar la interfície eth0, i si no existeix la
interfície eth1, si no existeix la interfície eth2 i si no existeix la eth3. Quan trobi una funcionant, el programa finalitzarà mostrant per pantalla "Interfçie ethX activada" on X representa el número de la interfície activada. Si no en troba cap, el programa finalitzarà amb el missatge "No s'ha trobat cap interfície vàlida".

2.- Fes un script que mostri per pantalla el número de fitxers de mida diferent a 0 bytes que es troben en un directori el nom del qual donarà l'usuari durant l'execució del programa. El nom del directori es passarà com a paràmetre a una funció. La variable que comptarà els fitxers que cumpleixen les condicions ha de ser local a la funció. El nom de la funció sera compte_fitxers(). El script s'anomenarà p4s2.sh.


3-
Fes l'apartat 3 de la pràctica 1 utilitzant select i let. El script s'anomenarà p4s3.sh.

4.- Fes un script que per pantalla faci sortir un menú, utilitzant select, de manera que puguem veure diversos paràmetres de configuració del sistema. Els paràmetres es troben dins de variables definifides a arxius dins del directori /etc/sysconfig. Utilitza l'ordre grep per ajudar-te.  Els paràmetres que haurien de poder escollir per veure el seu valor son: a) Llengüa del sitema, b) El gestor de finestres per defecte, c)  El programa gestor d'arrancada del sistema, d) El mapa del teclat, e) El display manager per defecte. f) L'adreça IP per defecte de la interficie eth, g) L'adreça IP per defecte del router i h) El nivell d'execució del sistema per defecte. L'opció escollida s'ha de passar com a paràmetre a una única funció que serà la que trobarà el resultat i el mostrarà per pantalla, i que s'anomenarà visualitza_conf(). El script s'anomenarà p4s4.sh.
NOTA1: Descarrega ubuntu.txt amb informació per fer la pràctica des de la distribució Ubuntu de GNU/Linux.

5- Un any de traspàs és aquell en el qual el mes de febrer té un dia més. Un any és de traspàs si es divisible per 4. Si l'any és divisible per 100 no és de traspàs. Si un any és divisible per 100 i per 400 llavors és un any de traspàs (1900 no va ser any de traspàs però si que ho va ser l'any 2000). Fes un script utilitzant elif i l'ordre let.  Mostra el resultat.  L'any s'ha de passar com a paràmetre. En cas de passar un número diferent a 1 de paràmetres,o passar un valor no numèric, el programa enviarà a la pantalla el missatge "Nombre o tipus de paràmetre incorrecte". La comprovació dels errors s'ha de fer dins d'una funció de nom gestio_error().
El script s'anomenarà p4s5.sh.
NOTA:  % serveix per fer trobar el residu de la divisió de  2 nombres.
NOTA 2: grep -v -q '[[:alpha:]]' serveix per saber si una variable té un o més caràcters no númerics.

6- Fes un script per comprovar si la localització (el directori) d'un script esta dins del PATH, si és executable i si té una mida més gran que 0. Per això caldrà  saber el seu nom, que has de passar com a paràmetre. Utilitza la comprovació de fitxers amb l'ordre if.  La comprovació s'ha de fer amb una funció de nom comprova(). Si el fitxer es troba dins del PATH, té permisos d'execució i té una mida més gran que 0, el scrit retornarà el missatge "Fitxer executable". En cas contrari retornarà el missatge "Fitxer no executable". En cas de passar un número diferent a 1 de paràmetres el programa enviarà a la pantalla el missatge "Nombre de paràmetre incorrecte". La comprovació dels errors s'ha de fer dins d'una funció de nom gestio_error(). El script s'anomenarà p4s6.sh.
NOTA 1: IFS és una variable interna del bash a on es desa el caracter separador de llistes.
NOTA 2: El caràcter separador de la variable PATH és :

7-  Fes un script del bash shell que permeti a l'usuari escollir entre executar 3 funcions que fan la mateixa tasca que els scripts 2,5 i 6. Els noms de les funcions seran scr2(), scr5() i scr6().  Recorda que aquests scripts treballen amb paràmetres, de manera que el programa haurà de demanar a l'usuari el valor que volem passar a les funcions en temps d'execució. La part de demanar dades serà una altra funció de nom menu(). Dins de la funció menu() utilitza únicament variables locals.
El script s'anomenarà p4s7.sh.

8- Fes un script del bash shell que comprovi si el programa test.sh es troba dins del PATH teu ordinador, és executable, ets el seu propietari i  té una mida més gran que 0 bytes.  En cas de que es cunpleixin totes les condicions, fes que s'executi el programa. En cas contrari, el descarregueres de http://www.collados.org/asi2/dfsi/linux/p4/test.sh amb l'ordre wget, i el deixaràs dins del directori ~/bin, amb permisos d'execució, i l'executaràs. En principi, el directori bin ha d'existir. Si no existeix, l'has de crear.
El script s'anomenarà p4s8.sh.

9- S'han de lliurar els arxius de guió comprimits dins d'un arxiu de nom  asi2 _dfsi_nom_cognom_p4bash.tar.gz que s'han d'enviar a cf(arrova)collados.org.  A l'assumpte del correu heu de posar asi2 _dfsi_nom_cognom_p4bash. L'últim dia per lliurar el treball és el 15-3-2009 a les 14 Hores. Posaré les solucions a les 14H30. No recolliré cap pràctica després d'aquest dia i hora. .