Construeix pas a pas el teu programa usant Shell Scripting - Part 5

En anteriors publicacions d'aquesta ronda anomenada «Construeix pas a pas el teu programa usant Shell Scripting» hem abastat ja sobre com implementar els següents mòduls:

Shell Scripting

Ara en aquesta nova publicació veurem com implementar un:

MÒDUL D'AUTORITZACIÓ D'USUARI AMB CONTRASENYA

El qual hauria de ser el mòdul (secció) del seu programa que li permeti assegurar que només el o els usuaris prèviament definits per utilitzar el mateix puguin executar les operacions designades per al seu programa. El mateix pot incloure o no, una contrasenya per aquests usuaris autoritzats. En aquest cas, explorarem un amb validació d'usuari i contrasenya.

Jo personalment afegeixo les següents línies per crear aquest mòdul:

A continuació el codi:


###############################################################################
# INICIO DEL MODULO DE AUTORIZACIÓN DE USUARIO CON CONTRASEÑA
###############################################################################

setterm -background blue

espeak -v es-la+m1 -a 100 -p 50 -s 150 -b UTF-8 --stdout "ESTIMADO USUARIO: RECUERDA QUE EL LINUX POST INSTALL SCRIPT BICENTENARIO SOLICITA TU AUTENTICACION Y VALIDACION PARA EVITAR USOS INDEBIDOS POR PARTE DE PERSONAL NO AUTORIZADO. EN CASO DE NO SABER USUARIO Y CONTRASEÑA, ESCRIBA SALIR EN MAYUSCULA." | aplay -q

echo "ESTIMADO USUARIO: RECUERDA QUE EL LINUX POST INSTALL SCRIPT BICENTENARIO SOLICITA TU AUTENTICACION Y VALIDACION PARA EVITAR USOS INDEBIDOS POR PARTE DE PERSONAL NO AUTORIZADO. EN CASO DE NO SABER USUARIO Y CONTRASEÑA ESCRIBA, SALIR EN MAYUSCULA." | clear

dialog --infobox "\n \n \nESTIMADO USUARIO: RECUERDA QUE EL LINUX POST INSTALL SCRIPT BICENTENARIO SOLICITA TU AUTENTICACION Y VALIDACION PARA EVITAR USOS INDEBIDOS POR PARTE DE PERSONAL NO AUTORIZADO. EN CASO DE NO SABER USUARIO Y CONTRASEÑA, ESCRIBA SALIR EN MAYUSCULA." 10 80

################################################################################

USUARIO=0

until [ "$USUARIO" = "sysadmin" ];

do

espeak -v es-la+m1 -a 100 -p 50 -s 150 -b UTF-8 --stdout "ESTIMADO USUARIO: INTRODUZCA UN NOMBRE DE USUARIO VALIDO." | aplay -q

read -p "INTRODUZCA UN NOMBRE DE USUARIO VALIDO / PLEASE ENTER A VALID USER: " USUARIO
echo ""

if [ "$USUARIO" = "SALIR" ]; then

   setterm -background green
   play /usr/share/sounds/warning.wav 2> /dev/null

   echo -e "\nUsted ha decidido salir del Programa, hasta luego.\nYou have decided to leave the program, later.\n\n\nPuede intentarlo mas tarde.\nYou can try later."

   exit 0

fi


if [ "$USUARIO" != "$USR1_VALID" ]; then

   setterm -background red
   play /usr/share/sounds/error.wav 2> /dev/null

   echo -e "\nError al introducir un Usuario valido.\nFailed to enter a valid user.\n\n\nVuelva a intentarlo de nuevo.\nPlease try again."

fi

done

if [ "$USUARIO" = "$USR1_VALID" ]; then

   setterm -background blue
   play /usr/share/sounds/info.wav 2> /dev/null

   echo -e "\nAuntenticación de Usuario valido exitosa.\nValid user authentication successful.\n\n\nEspere unos segundos para continuar.\nWait a few seconds before continuing"

   sleep 3

fi

################################################################################

CLAVE=0

until [ "$CLAVE" = "lpi*sb8" ];

do

espeak -v es-la+m1 -a 100 -p 50 -s 150 -b UTF-8 --stdout "ESTIMADO USUARIO: INTRODUZCA UNA CONTRASEÑA VALIDA." | aplay -q

read -p "INTRODUZCA UNA CONTRASEÑA VALIDA / ENTER A VALID PASSWORD: " CLAVE
echo ""

if [ "$CLAVE" = "SALIR" ]; then

   setterm -background green
   play /usr/share/sounds/warning.wav 2> /dev/null

   echo -e "\nUsted ha decidido salir del Programa, hasta luego.\nYou have decided to leave the program, later.\n\n\nPuede intentarlo mas tarde.\nYou can try later."

   exit 0

fi


if [ "$CLAVE" != "$PASSWD_VALID" ]; then

   setterm -background red
   play /usr/share/sounds/error.wav 2> /dev/null

   echo -e "\nError al introducir una Contraseña valida.\nFailed to enter a valid password.\n\n\nVuelva a intentarlo de nuevo.\nPlease try again."

fi

done

################################################################################

if [ "$CLAVE" = "$PASSWD_VALID" ]; then

   setterm -background blue
   play /usr/share/sounds/info.wav 2> /dev/null

   echo -e "\nAuntenticación de Contraseña valida exitosa.\nValid password authentication successful.\n\n\nEspere unos segundos para continuar.\nWait a few seconds before continuing"

   sleep 3

fi

espeak -v es-la+m1 -a 100 -p 50 -s 150 -b UTF-8 --stdout "ESTIMADO USUARIO: ACCESO GARANTIZADO - USUARIO Y CONTRASEÑA CORRECTA" | aplay -q

echo "ESTIMADO USUARIO: ACCESO GARANTIZADO - USUARIO Y CONTRASEÑA CORRECTA." | sleep 5 | clear

dialog --infobox "\n \n \nESTIMADO USUARIO: ACCESO GARANTIZADO - USUARIO Y CONTRASEÑA CORRECTA." 10 80 ; sleep 5

DIALOG=${DIALOG=dialog}

$DIALOG --title "LINUX POST INSTALL - SCRIPT BICENTENARIO" --clear \
        --yesno "\n \n \nBIENVENIDO USUARIO: $(whoami), PRESIONE "SI" PARA CONTINUAR O "NO" PARA FINALIZAR." 10 80

case $? in
  0)
    echo ""
    echo ""
    echo "Continuando el proceso..."
    echo ""
    echo "."
    sleep 1
    echo ".."
    sleep 1
    echo "..."
    sleep 1
    clear;;
  1)
    exit 0;;
  255)
    exit 0;;
esac

dialog --infobox "\n \n \n ESPERE UNOS SEGUNDOS MIENTRAS EL PROGRAMA SE INICIALIZA..." 10 80 ; sleep 3

###############################################################################
# FINAL DEL MODULO DE AUTORIZACIÓN DE USUARIO CON CONTRASEÑA
###############################################################################

Com poden apreciar aquest mòdul realitza primerament la configuració del teu pantalla de terminal a fons blau per a una millor apreciació visual de l'usuari, Després emet missatges auditius amb espeak y visuals amb trobo y Diàleg. A continuació mitjançant un bucle amb l'ordre fins valida que el valor introduït per al nom d'usuari sigui comparat amb el o els valors d'usuari vàlids prèviament definits, proporcionant a l'usuari la possibilitat de tancar el programa correctament escrivint la paraula SORTIR. En cas de ser reeixida la validació de l'usuari, procedeix a realitzar el mateix procediment amb la contrasenya. Per acabar finalitzant en cas de ser reeixida la validació de l'usuari i contrasenya amb un senzill menú fet a Diàleg preguntant si l'Usuari X desitja seguir continuant el procés de el programa o no. En cas positiu, emet una senzilla barra progressiva d'espera realitzada amb la comanda cas.

=============

recomanació:

Programar o pensar! Que és primer? o Què és més important?

Sens dubte, quan ens vam iniciar en programació el primer que hauríem d'aprendre és algoritmes o diagrames de fluxos com a bases teòriques per aprendre lògica i matemàtica per incrementar el nostre raonament lògic-matemàtic, però, és aquesta base suficient o l'adequada per començar a programar . entén que Aprendre a Programar, no és suficient, necessari és Aprèn a Pensar.

¿A QUIN LLENGUATGE DE PROGRAMACIÓ HAURIA iniciar-me PER ACONSEGUIR APRENDRE RÀPIDAMENT A PROGRAMAR?

Aquesta és segurament una pregunta obligada que tots ens fem a l'iniciar-nos en el meravellós món de la programació. Però no és la primera pregunta correcta que ens hauríem de fer, sinó:

¿CONTE AMB LA CAPACITAT ANALÍTICA NECESSÀRIA PER ANALITZAR UN PROBLEMA, TREURE ELS SEUS ELEMENTS I VISUALITZAR UNA RESPOSTA?

I certament aprendre a programar en qualsevol dels més comuns o potents llenguatges té molts beneficis innegables. Ja que ens proporciona les eines necessàries per desenvolupar les nostres pròpies aplicacions, ens ajuda a localitzar problemes en dispositius tecnològics, i ens obre portes al mercat laboral, però programar és només una petita part de les ciències de la computació.

Mentre Programar o escriure codi consisteix en ensenyar a un Computador (mitjançant una aplicació, programari o sistema) ha realitzar una operació determinada, després d'una opció X realitzada per un operador o d'un esdeveniment X per o dins el mateix maquinari o programari que el suporta; Els principis de les Ciències de la computació (Informàtica / Sistemes) ens ensenyen habilitats de raonament i lògica que són útils en altres àrees diferents de la tecnologia. Informàtica, en essència, ensenya a processar ia representar informació.

Per tant, aquesta considero jo que és la forma més adequada de Aprendre a programar.

T'explico, prenent com a exemple, aquest altre post anomenat «Do not learn to code. Learn to think » de Yevgeniy Brikman, On aquest enginyer ens exposa resumidament la diferència entre saber programar, i saber pensar com un informàtic amb aquesta analogia:

Per molt omnipresent que sigui una tecnologia, això no fa que la aprenguem quan la vam estudiar en un Centre d'ensenyament. Com a exemple poguéssim prendre que gairebé qualsevol persona en algun moment de la vida ha volat alguna vegada en un avió, però d'aquí a aconseguir aconseguir una llicència de pilot, hi ha un camí molt llarg per recórrer, que en general no forma part dels estudis formals d'una persona, sinó uns estudis molt particulars sobre una àrea específica.

Explicat més detalladament, això vol dir que els coneixements que qualsevol pugui tenir sobre com funcionen els avions bàsicament molts els tenim des de l'educació secundària i universitària o en qualsevol carrera tècnica (enginyeria), com ara la física i les matemàtiques que ens ajuden a entendre com les forces presents en el vol, i els elements externs com la gravetat, la pressió atmosfèrica, la velocitat, la fricció o la sustentació. I així com la biologia ens ajuda a comprendre com un ésser humà es comporta s'ha X alçada, o com es veu afectat per la falta d'oxigen i fred extrem. O la història que ens permet saber el procés que va donar origen a com van ser creats els avions, i que paper tenen en el transport i el comerç. Totes aquests coneixements junts adquirits en un Centre d'ensenyament, de diverses àrees de coneixement, ens proporcionen una idea general de què és una avió i com funciona. La assignatures generals ens ajuden a entendre una gran varietat de problemes, inclosos com volen els avions. Una cosa molt diferent d'una assignatura especialitzada que t'ensenya només a manejar una d'aquestes màquines, un tipus d'avió. Per tant, per la mateixa raó, hauríem enfocar-nos en estudiar Ciències de la computació, i no només programació. Ja que mentre les Ciències de la Computació ens ensenya globalment a pensar en un sentit general (sistèmic), la programació només és una eina que ens permet plasmar mitjançant un codi X una idea o problema I, prèviament ja analitzat (correcta o incorrectament).

Aquest i molts altres punts de vista aportats per Yevgeniy Brikman en el seu post sobre que Programar és només una part d'un coneixement més ampli encastat dins de les Ciències de la computació, Les quals són essencials per a tot programador.

Per últim, recordin anar avançant de manera autodidàctica amb l'aprenentatge sobre les ordres més importants de GNU / Linux per seguir avançant coneixements que faran servir més endavant, i que tot el aquí exposat sobre el desenvolupament d'algun mòdul, funció, variable, comanda o acció en general pot realitzar-se de diferents maneres o mètodes alternatius, diferents als aquí descrits.

A continuació un Screencast realitzat per mi, Per on podran veure com s'executa aquest mòdul, anteriors o posteriors mòduls a ensenyar, perquè vegin el potencial de l'Shell Scripting ha un nivell mitjà (No avançat):

Screencast de Test de l'LPI-SB8

(LINUX POST INSTALL - SCRIPT BICENTENARI 8.0.0) - Part 2


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   Un altre que pasabaa va dir

    Haver si ho he entès bé. Demanes que l'usuari meta el nom d'usuari ... bé. I després que meta la contrasenya ... i resulta que la contrasenya és «lpi * SB8" ... i que està «hardcodeada» en l'script.

    Si l'usuari té accés de lectura a l'script ... bingo !! ... ja sap que usuari i que contrasenya ha de ficar !!!

    No se si m'he equivocat en alguna cosa ... però si és així, això és molt poc segur ...

  2.   Eng. Jose Albert va dir

    Cert! Jo vaig donar un mètode ara cadascú amb aquesta innata curiositat que caracteritza la raça humana ha de buscar la perfecció o l'enfortiment de la mateixa en les línies de seguretat.