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)
awk
e) cut
f) Expressions regulars simples amb grep. Ampliació de awk.
g) https://www.regular-expressions.info/ip.html

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

3- awk, cut, tr, tail i head
a)
Per imprimir columnes de les lķnies d'un fitxer de text utilitzant carącters especial com a separador:
     awk  -F  ":"  '{print $1}'  /etc/passwd   --> Mostra la primera columa (el nom d'usuari) del fitxer /etc/passwd.
El carącter : serveix per identificar les columnes. 
    
awk  -F  ":"  '{print $1 "  "  $3}'  /etc/passwd   --> Mostra la primera columa i 3a columna (nom d'usuari i UID) del fitxer /etc/passwd
     cut  -d  ":"  -f 1  /etc/passwd  --> Talla la lķnia a trossos i mostra el primer tros (usuari). El carącter : serveix per fer els talls.
    
cut  -d  ":"  -f 1,3  /etc/passwd  --> Talla la lķnia a trossos i mostra el primer tros (usuari) i el 3r (UID). El carącter : serveix per fer els talls.
 b) Per canviar carącters o suprimir carącters repetits:
    
cut  -d  ":"  -f 1,3  /etc/passwd  |  tr  ":"  "  "  --> Talla la lķnia a trossos i mostra el primer tros (usuari) i el 3r (UID). El carącter : serveix per fer els talls. Els ":" seran canviats per " ".
     echo "Hola     ---      món......"  |  tr  -s  "  -." --> Mostra hola : món. --> esborra espais en blanc, -  i .  repetits
     Nota:  \t representa el tabulador i \n el canvi de lķnia.
c) Per mostrar el final o el principi d'un fitxer:
    tail  -n 10 /var/log/syslog   -->  Mostra les darreres 10 lķnies de /var/log/syslog
    head 
-n 10 /var/log/syslog   -->  Mostra les primeres 10 lķnies de /var/log/syslog
d) Per aprofitar cut amb una cadena de carącters:
    echo "35.098.567.T"  |  cut  -d  "."  -f  2  --> Mostra 098

PRĄCTICA

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.               

4- Fes un arxiu de guió que demani a l'usuari per teclat el nom i directori d'un arxiu de configuració principal d'un servei de Linux i crei una nova versió del fitxer sense comentaris que s'haurą de desar a una carpeta personal de l'usuari de nom FitxConfBackup. El programa ha de crear la carpeta si no existeix. El nom del fitxer desat a FitxConfBackup ha de ser el mateix que l'original. Si el fitxer ja existeix, s'ha de sobreescriure. El programa finalitzarą amb el codi de retorn 0. El nom del programa serą backup.sh.

5- Fes un arxiu de guió que extregui tots els punt de muntatge i formats del fitxers /etc/fstab i desi aquesta informació dins d'un fitxer de nom mountpoint.txt dins una carpeta personal de l'usuari de nom FitxConfBackup. El programa ha de crear la carpeta si no existeix. Si el fitxer ja existeix, s'ha de sobreescriure. El programa finalitzarą amb el codi de retorn 0. El nom del programa serą mountpoints.sh.

6- Fes un  arxiu de guió que descarregui error.log i a continuació extregui totes les lķnies que tinguin un error per una data determinada que l'usuari haurą d'entrar per teclat (dia, mes i any) i desi aquesta informació dins d'un fitxer de nom errXXXXYYYDD.log dins una carpeta personal de l'usuari de nom FitxConfBackup. XXXX representa l'any introduit per teclar. YYY representa el mes i DD el dia. El programa ha de crear la carpeta si no existeix. Si el fitxer ja existeix, s'ha de sobreescriure. El programa finalitzarą amb el codi de retorn 0. El nom del programa serą errors.sh.

7- Fes un arxiu de guió que demani a l'usuari l'adreēa IP dels servidors DNS del sistema. L'arxiu crearą un nou fitxer /etc/resolv.conf  a sobre del fitxer ja existent amb les noves IP de servidor DNS. Abans de crear el nou arxiu, el programa s'ha d'assegurar que les adreces IP tenen el format correcte. Si les adreces no són correctes,  el programa finalitzarą immediatament enviant el codi de sortida 1 i sense modificar l'arxiu /etc/resolv.conf.
Si les adreces són correctes,  el programa crearą un nou fitxer /etc/resolv.conf i finalitzarą immediatament enviant el codi de sortida 0. El nom del programa serą dns.sh.

8-
Fes un  arxiu de guió que descarregui dins del directori des del qual s'executa el programa el fitxer mails.tmp i a continuació extregui totes les lķnies que tinguin una adreēa de correu electrņnic amb el format correcte. Amb aquestes adreces s'ha de crear un nou arxiu de nom mails_ok.txt en el mateix directori a on s'ha executat el programa.  El nom del programa serą mails.sh.

9-
Fes un arxiu de guió que demani a l'usuari una adreēa URL, comprovi si es correcta i a continuació cridi a firefox per obrir l'adreēa introduida. Si l'adreēa URL no té el format correcte, llavors el programa finalitzarą immediatament enviant el codi de sortida 1.  Si l'adreēa URL no té el format correcte, llavors el programa obrirą firefox amb l'adreēa indicada i finalitzarą el codi de sortida 0.  El nom del programa serą url.sh.

LLIURAMENTS
LLiurament 2