Desenvolupament de Funcions pels Sistemes Informàtics
ASI-2
GNU/Linux
Scripts del bash shell de Linux (II)
10/01/11

Scripts dels bash shell de Linux (II).

DOCUMENTACIÓ

0.- [  ] i [[  ]]: Pàgines 51 a 54 i pàgina 56 del document Advanced Bash-Scripting Guide.
1.- Taula amb les principals diferències entre [ ] i [[ ]] http://mywiki.wooledge.org/BashFAQ/031
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 amb le if i elif de manera que intenti comprovar si existeix  la interfície eth0, i si existeix, llavors l'activarà. Si no existeix eth0, comprovarà si existeix eth1,
i si existeix, llavors l'activarà. Si no existeix eth1, comprovarà si existeix wlan0, i si existeix, llavors l'activarà. Si no existeix wlan0, comprovarà si existeix wlan1, i si existeix, llavors l'activarà. En el moments que activi una interfície, llavors el programa finalitzarà mostrant per pantalla "Interfície XXX activada" on XXX representa la interfície activada (nom i número). Si no troba cap interfície, el programa finalitzarà amb el missatge "No s'ha trobat cap interfície vàlida". El script s'anomenarà p4s1.sh.

2.- Fes un script que mostri per pantalla el número de fitxers amb permisos de lectura (per l'usuari que l'executa) i de mida diferent a zero que es troben en un directori el qual s'haurà d'escollir de manera gràfica. El nom del directori es passarà com a paràmetre a una funció que serà l'encarregada de comptar el número de fitxers. La variable a on es desarà el número de fitxers que cumpleixen les condicions ha de ser local a la funció. El nom de la funció sera compte_fitxers(). El resultat s'ha de mostrar de la següent manera:




El script s'anomenarà p4s2.sh.


3.- Fes un script que per pantalla faci sortir un menú, utilitzant select, de manera que puguem veure diversos paràmetres de configuració del sistema. 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) L'entrada per defecte del menú GRUB,  c) El mapa del teclat, d) El display manager per defecte i e) L'adreça MAC de la interfície eth0. 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à p4s3.sh.
NOTA1: Descarrega ubuntu.txt amb informació per fer la pràctica des de la distribució Ubuntu de GNU/Linux.

4- 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à p4s4.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.

5- 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à p4s5.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 :

6-  Fes un script del bash shell que permeti a l'usuari escollir entre executar 3 funcions que fan la mateixa tasca que els scripts 3,4 i 5. Els noms de les funcions seran scr3(), scr4() i scr5().  Recorda que aquests scripts 4 i 5 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ó. Has de crear una funció de nom menu() per demanar quina funció vols executar, i en el cas que sigui una funció que requereix un paràmetre, l'hauràs de demanar a continuació. Dins de la funció menu() utilitza únicament variables locals.
El script s'anomenarà p4s6.sh.

7- Fes un script del bash shell que comprovi si el programa prova.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/linux/p4/prova.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à p4s7.sh.

S'han de lliurar els arxius de guió comprimits dins d'un arxiu de nom  asi2 _dfsi_nom_cognom_p4_linux.tar.gz que s'han d'enviar a cf(arrova)collados.org.  A l'assumpte del correu heu de posar asi2 _dfsi_nom_cognom_p4_linux. L'últim dia per lliurar el treball és el 31-1-2011.