Bouw uw programma stap voor stap met Shell Scripting - Deel 5

In eerdere publicaties van deze ronde genoemd «Bouw uw programma stap voor stap met Shell Scripting» We hebben al besproken hoe u de volgende modules implementeert:

Shell-scripts

Nu zullen we in deze nieuwe publicatie zien hoe we een:

GEBRUIKERSAUTORISATIEMODULE MET WACHTWOORD

Wat de module (sectie) van je programma zou moeten zijn waarmee u ervoor kunt zorgen dat alleen de gebruiker of gebruikers die eerder zijn gedefinieerd om het te gebruiken, de bewerkingen kunnen uitvoeren die voor uw programma zijn aangewezen. Het kan al dan niet een wachtwoord bevatten voor genoemde geautoriseerde gebruikers. In dit geval zullen we er een onderzoeken met gebruikersnaam- en wachtwoordvalidatie.

Ik voeg persoonlijk de volgende regels toe om deze module te maken:

Onder de code:


###############################################################################
# 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
###############################################################################

Zoals u kunt zien, configureert deze module eerst uw terminal scherm op blauwe achtergrond een betere visuele waardering van de gebruiker, zendt dan uit auditieve berichten met spreken y zichtbaar met echo y Dialoog. Vervolgens door een lus met behulp van de opdracht tot valideert dat de waarde die is ingevoerd voor de gebruikersnaam worden vergeleken met de geldige gebruikerswaarde (n) eerder gedefinieerd, waardoor de gebruiker het programma correct kan sluiten door het woord te typen EXIT. Als de gebruikersvalidatie is gelukt, voert u dezelfde procedure uit met het wachtwoord. Om de beëindiging te beëindigen in het geval van een succesvolle validatie van de gebruiker en het wachtwoord met een eenvoudig menu gemaakt in Dialoog vragen of gebruiker X het programma wil voortzetten of niet. Zo ja, geef dan een simple progressieve balk wachten gedaan met het commando geval.

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

aanbeveling:

Plan of denk na! Wat is eerst? o Wat is belangrijker?

Wanneer we beginnen met programmeren, moeten we ongetwijfeld eerst algoritmen of stroomdiagrammen leren als theoretische basis om logica en wiskunde te leren om onze logisch-wiskundige redenering te vergroten, maar dit is voldoende of voldoende basis om te beginnen met programmeren. Begrijp dat Leer programmeren, het is niet genoeg, het is nodig Leer denken.

IN WELKE PROGRAMMEERTAAL MOET IK BEGINNEN OM SNEL TE KUNNEN LEREN PROGRAMMEREN?

Dit is zeker een verplichte vraag die we ons allemaal stellen als we beginnen in de wondere wereld van programmeren. Maar het is niet de eerste juiste vraag die we onszelf moeten stellen, maar:

HEB IK DE ANALYTISCHE CAPACITEIT DIE NODIG IS OM EEN PROBLEEM TE ANALYSEREN, DE ELEMENTEN ERUIT TE HALEN EN EEN REACTIE TE WEERGEVEN?

En het leren programmeren in een van de meest voorkomende of krachtige talen heeft onmiskenbare voordelen. Omdat het ons de nodige tools biedt om onze eigen applicaties te ontwikkelen, helpt het ons bij het lokaliseren van problemen in technologische apparaten, en het opent deuren voor ons op de arbeidsmarkt, maar programmeren is slechts een klein onderdeel van de informatica.

Terwijl Programmeer of schrijf code bestaat uit het leren van een computer (via een applicatie, software of systeem) om een ​​bepaalde handeling uit te voeren, na a Optie X uitgevoerd door een operator of een Evenement X door of binnen dezelfde Hardware of Software die dit ondersteunt; De principes van informatica (informatica / systemen) ze leren ons redeneren en logische vaardigheden die nuttig zijn op andere gebieden dan technologie. Computerwetenschap leert in wezen hoe informatie moet worden verwerkt en weergegeven.

Daarom beschouw ik dit als de meest geschikte manier van Leer programmeren.

Ik leg uit, als voorbeeld, dit andere bericht genaamd Leer niet coderen. Leer denken » de Yevgeny Brikman, waar deze ingenieur het verschil samenvat tussen weten hoe te programmeren en weten hoe te denken als een computerwetenschapper met deze analogie:

Hoe alomtegenwoordig een technologie ook is, dit zorgt er niet voor dat we het leren als we het bestuderen in een onderwijscentrum. Als voorbeeld zouden we kunnen nemen dat bijna iedereen ooit in het leven ooit in een vliegtuig heeft gevlogen, maar van daaruit om een ​​vliegbrevet te behalen, is er nog een lange weg te gaan, die over het algemeen geen deel uitmaakt van de formele studies van een persoon, maar heel bijzondere studies op een specifiek gebied.

Meer in detail uitgelegd, betekent dit dat de kennis die iedereen kan hebben over hoe vliegtuigen werken, in principe velen van ons hebben uit het middelbaar en universitair onderwijs of in een technische carrière (techniek), zoals natuurkunde en wiskunde die ons helpen te begrijpen hoe de krachten aanwezig tijdens de vlucht en externe elementen zoals zwaartekracht, atmosferische druk, snelheid, wrijving of lift. En net zoals biologie ons helpt te begrijpen hoe een mens zich gedraagt ​​op X-hoogte, of hoe hij wordt beïnvloed door zuurstofgebrek en extreme kou. Of het verhaal dat ons in staat stelt het proces te kennen dat heeft geleid tot hoe vliegtuigen zijn gemaakt en welke rol ze spelen in transport en handel. Al deze kennis samen opgedaan in een onderwijscentrum, vanuit verschillende kennisgebieden, geven ons een algemeen beeld van wat een vliegtuig is en hoe het werkt. Algemene onderwerpen helpen ons een breed scala aan problemen te begrijpen, inclusief hoe vliegtuigen vliegen. Iets heel anders dan een gespecialiseerd vak dat je alleen leert om een ​​van die machines te bedienen, een soort vliegtuig. Om dezelfde reden moeten we ons daarom concentreren op het bestuderen van informatica, en niet alleen op programmeren. Aangezien computerwetenschappen ons globaal leren denken in algemene (systemische) zin, is programmeren slechts een hulpmiddel dat ons in staat stelt een idee of probleem Y te vertalen via een code X, eerder geanalyseerd (correct of incorrect).

Deze en vele andere standpunten zijn bijgedragen door Yevgeny Brikman in zijn post over wat Dienstregeling het is slechts een deel van een bredere kennis ingebed in de Informatica, die essentieel zijn voor elke programmeur.

Vergeet ten slotte niet om op een autodidactische manier vorderingen te maken door de belangrijkste commando's van te leren GNU / Linux om door te gaan met het bevorderen van kennis die ze later zullen gebruiken, en dat alles wat hier wordt gepresenteerd over de ontwikkeling van sommigen module, functie, variabele, commando of actie in het algemeen kan het op verschillende manieren of alternatieve methoden worden uitgevoerd, anders dan hier beschreven.

Hieronder een Screencast gemaakt door mij, waar u kunt zien hoe deze module wordt uitgevoerd, eerdere of latere modules die moeten worden aangeleerd, zodat u het potentieel van Shell Scripting op gemiddeld niveau kunt zien (niet geavanceerd):

LPI-SB8 Test ScreenCast

(LINUX POST INSTALLEREN - BICENTENNIAL SCRIPT 8.0.0) - Deel 2


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.

  1.   Een ander die langs kwam zei

    Om te hebben als ik het goed heb begrepen. U vraagt ​​de gebruiker om zijn gebruikersnaam in te voeren ... prima. En nadat je je wachtwoord hebt ingevoerd ... en het blijkt dat het wachtwoord "lpi * sb8" is ... en dat het "hardcoded" is in het script.

    Als de gebruiker leestoegang heeft tot het script… bingo !!… weten ze al welke gebruikersnaam en wachtwoord ze moeten invoeren !!!

    Ik weet niet of ik ergens een fout heb gemaakt ... maar als dat zo is, is dat erg onveilig ...

  2.   José Albert zei

    Klopt! Ik gaf nu een methode, iedereen met die aangeboren nieuwsgierigheid die het menselijk ras kenmerkt, moet zijn perfectie of versterking zoeken in de veiligheidslijnen.