M06 UF2:  Automatitzaciķ de tasques i llenguatges de guiķ
ASIX-2
GNU/Linux
Arxius de guiķ de l'interpret d'ordres bash: Funcions. Zenity
30/03/17

Arxius de guiķ de de l'interpret d'ordres bash: Funcions i Zenity

1- Documentaciķ 
a) Definiciķ de funcions
b) Pas de parāmetres a funcions
c) Variables locals de funcions
d)  Manual de Zenity

2- Exemples de treball amb funcions
a) Exemples bāsics

3- Exemples de treball amb Zenity
a)
 Exemples bāsics
b) Exemples-1
c) Exemples-2
d) Canalitzaciķ cap a zenity
e) Zenity: Escollir un fitxer i una opciķ dins d'una llista

4- Instalˇlaciķ de Zenity
Si zenity no funciona potser és perquč no ha estat previament instalˇlat. Es pot soulcionar el problema executant com a usuari root l'ordre: aptitude install zenity.

PRĀCTICA

PART 1 - FUNCIONS

1- Fes un arxiu de guiķ  de l'interpret d'ordres del bash shell per l'usuari root que tingui 2 funcions. La primera funciķ s'anomenarā mostra_serveis() i després de netjar la pantalla, mostrarā un menú per escollir entre els següent serveis: a) cups, b) ssh i c) apache2. L'opciķ escollida s'haurā d'enviar a una altra funciķ de nom ctrl_servei() que posarā el servei en funcionament  si el servei no estā en marxa.  Si el servei estā en marxa no farā res i finalitzarā la funciķ. El programa finalitzarā amb el codi de retorn 0. El script s'anomenarā ctrlsrv.sh.

2- Fes un arxiu de guiķ  de l'interpret d'ordres del bash shell per l'usuari root que tingui 5 funcions:
    * Funciķ menu() --> Neteja pantalla i mostra les 4 opcions del programa que sķn:
                       a) Crea usuari
                       b) Crea grup
                       c) Afegeix un un usuari a un grup
                       d) Treu un usuari d'un grup
    * Funciķ crusr() --> Neteja pantalla, demana dades per crear un usuari i crea el grup
    *
Funciķ cgrp() --> Neteja pantalla, demana dades per crear un grup i crea el grup
    *
Funciķ afegr() --> Neteja pantalla, demana dades d'un usuari i grup, i afegeix l'usuari al grup
   
* Funciķ esbgr() --> Neteja pantalla, demana dades d'un usuari i grup, i treu l'usuari del grup

El programa mostrarā pantalla el menú, i executarā la funciķ corresponent d'acord amb l'opciķ escollida. Un cop realitzada la tasca escollida, el programa ha de demanar a l'usuari  si vol continuar treballant o sortir del programa. Si l'usuari escriu 's' llavors es tornarā a mostrar el menu i en cas contrari el programa finalitzarā enviant un 0 com a codi de retorn. El script s'anomenarā usrgrp.sh.

3- Fes un arxiu de guiķ  de l'interpret d'ordres del bash shell 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 del qual es demanarā el nom a l'usuari. A continuaciķ, el nom del directori es passarā com a parāmetre a una funciķ de nom compte() que serā l'encarregada de comptar el número de fitxers que compleixen les condicions indicades al principi i mostrar el resultat per pantalla. El programa finalitzarā amb el codi de retorn 0. El nom del script serā compte_fitxers.sh.               

PART 2 - ZENITY

1- Fes un arxiu de guiķ de l'interprets d'ordres del bash shell, que tingui un GUI utilitzant amb zenity, que permeti primer de tot escollir a l'usuari un directori (el directori  d'inici sempre ha de ser el directori personal de l'usuari que executa el programa) després escriure un nom de fitxer a crear dins d'aquest directori i finalment escolir una extensiķ dins d'una llista. La llista serā de tipus "radiolist" i tindrā les següents opcions: 1) .c., 2) .sh, i 3) .conf. A continuaciķ es mostrarā un quadre de diāleg que permiti introduir un text que és desarā dins del fitxer escollit. El fitxer es crearā amb els permisos per defecte i l'usuari  haurā d'escollir  entre donar-li permís d'execuciķ o no si el fitxer té extensiķ ".sh", utilitzant una finestra de tipus "Question Dialog". El nom del script serā dialog1.sh.

2- Fes un arxiu de guiķ de l'interprets d'ordres del bash shell per l'usuari primari (root), que tingui un GUI utilitzant amb zenity, i que mostri un formulari que demani totes les dades necessāries per crear un nou usuari. Un cop donades les dades, el programa crearā l'usuari, i enviarā a la pantalla un avís d'usuari creat.  El password de l'suari no s'ha poder veure quan s'escriu. El nom del script serā dialog2.sh.

3- Fes un arxiu de guiķ de l'interprets d'ordres del bash shell per l'usuari primari (root), que tingui un GUI utilitzant amb zenity, i que permeti afegir una nova línia al fitxer /etc/crontab. El programa haurā de demanar el minut, hora i dia a la qual s'haurā d'executar l'arxiu de guiķ crontolat des de cron. Les hores poden ser les 00, 06, 12 i 18 (que es poden escollir des d'un menú) i els minuts poden ser 00,15,30 i 45 (que es poden escollir des d'un menú). El dia també s'ha de poder escollir des d'un calendari. També s'ha de poder escollir l'arxiu de guiķ que s'executarā a l'hora i dia demanats. A continuaciķ el nou fitxer /etc/crontab serā mostrar per pantalla. Al principi de tot, l'arxiu de guiķ haurā de fer una cōpia de seguretat de l'arxiu /etc/crontab de nom /etc/crontab.old. El nom del script serā dialog3.sh.

4- Fes un arxiu de guiķ de l'interprets d'ordres del bash shell per l'usuari primari (root), que tingui un GUI utilitzant amb zenity, i que permeti fer la cōpia de seguretat de tots els fitxers que tinguin una extensiķ que s'ha de demanar amb un "Text entry dialog" d'un directori que s'ha d'escollir amb un "File selection Dialog". Els fitxers s'han de copiar tots junts en únic fitxer que després s'ha de comprimir. El nom del fitxer de backup s'ha de demanar amb un "Text entry dialog". S'ha d'afegir la data de creaciķ amb l'ajut d'un "Calendar dialog". S'ha de demanar el directori a on es desa el backup amb l'ajut d'un "File selection dialog". El nom del script serā dialog4.sh.

5- 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 nom del script serā dialog5.sh  i el resultat s'ha de mostrar de la següent manera:


6- 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  per demanar a l'usuari un any i que mostri el resultat indicant si és de traspās o no.  L'any s'ha de passar com a parāmetre a una funciķ de nom calc() que farā el cācul. 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ā dialog6.sh.
NOTA 1:  % 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.


7-
Fes un arxiu de guiķ de l'interprets d'ordres del bash shell, que tingui un GUI utilitzant amb zenity, que permeti primer de tot escollir a l'usuari el directori a on ha desat tots els seus arxiu multimčdia (video i audio). La finestra haurā de tenir el títol següent "Selecciona la carpeta a on has desat les teves canįons" i hauria de tenir una amplada de 1000. El directori  d'inici sempre ha de ser el directori personal de l'usuari que executa el programa. Un cop escollit el directori, l'arxiu de guiķ ha de mostrar una finestra amb una llista de tots els arxiu amb l'extensiķ ".flv" (Flash Video --> Format dels fitxers del You Tube).  Un cop escollit el fitxer multimčdia a reproduir, sortirā una pantalla amb el títol" Escull volum" que permetrā a l'usuari escollir el volum inicial de reproducciķ (entre 0 i 500) i a continuaciķ es reproduirā el fitxer multimčdia amb el programa vlc. Per poder fe aquesta part s'haurā de treballar amb l'opciķ --scale del programa zenity. El nom de l'arxiu de guiķ serā dialog7.sh.

8- Fes un arxiu de guiķ de l'interprets d'ordres del bash shell per l'usuari root que mostri un formulari per realitzar la configuraciķ bāsica d'un servidor DHCP. El programa ha de fer les següents tasques:
El nom de l'arxiu de guiķ serā dialog8.sh.

9-  Fes un arxiu de guiķ de l'interprets d'ordres del bash shell  per l'usuari root, en el qual se li demanin totes les dades necessāries per crear un nombre N d'usuaris. El programa ha de:
El nom del programa serā dialog9.sh.

10- Fes un arxiu de guio per crear un fitxer de nom user.ldif necessari per treballar amb openLDAP i crear usuaris.  L'arxiu de guiķ ha de crear un formulari a on demanar:
    a) El nom de identificador de l'usuari que es vol crear
    b) El nom d'un domini ja existent
    c) El nom d'una unitat organitzativa  ja existent
    d) L'atribut cn de l'usuari
    e) L'atribut sn de l'usuari
    f) El número identificador d'usuari
    g) El número identificadot del grup per defecte de l'usuari
    h) El directori personal de l'usuari
    i) El shell de l'usuari
Amb aquesta informaciķ ha de crear el fitxer LDIF.
El nom del programa serā dialog10.sh.

LLIURAMENTS
LLiurament 3