Construa seu programa passo a passo usando Shell Scripting - Parte 5

Em publicações anteriores desta rodada chamada «Construa seu programa passo a passo usando Shell Scripting» Já cobrimos como implementar os seguintes módulos:

Shell Scripting

Agora, nesta nova publicação, veremos como implementar um:

MÓDULO DE AUTORIZAÇÃO DO USUÁRIO COM SENHA

Qual deve ser o módulo (seção) do seu programa isso permite que você garanta que apenas o usuário ou usuários previamente definidos para usá-lo possam executar as operações designadas para seu programa. Pode ou não incluir uma senha para os referidos usuários autorizados. Nesse caso, exploraremos um com validação de nome de usuário e senha.

Eu pessoalmente adiciono as seguintes linhas para criar este módulo:

Abaixo do código:


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

Como você pode ver, este módulo primeiro configura seu tela do terminal para fundo azul para uma melhor apreciação visual do usuário, então emite mensagens auditivas com falar y visuais com eco y diálogo. Em seguida, por meio de um loop usando o comando até valida que o valor inserido para o nome de usuário ser comparado com o (s) valor (es) de usuário válido (s) previamente definido, dando ao usuário a possibilidade de fechar o programa corretamente digitando a palavra SAÍDA. Se a validação do usuário for bem-sucedida, execute o mesmo procedimento com a senha. Terminar finalizando em caso de sucesso a validação do usuário e Senha com um menu simples feito em diálogo perguntando se o usuário X deseja continuar o processo do programa ou não. Se sim, emita um simples barra progressiva esperando feito com o comando casas.

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

Recomendação:

Agende ou pense! O que vem primeiro? o O que é mais importante?

Sem dúvida, quando começamos na programação, a primeira coisa que devemos aprender são algoritmos ou diagramas de fluxo como bases teóricas para aprender lógica e matemática para aumentar nosso raciocínio lógico-matemático, porém, esta é uma base suficiente ou adequada para começar a programar . Entenda que Aprenda a programar, não é o suficiente, é necessário Aprenda a pensar.

EM QUE LINGUAGEM DE PROGRAMAÇÃO DEVO COMEÇAR A ALCANÇAR RAPIDAMENTE APRENDENDO A PROGRAMAR?

Esta é certamente uma pergunta obrigatória que todos nós nos perguntamos quando começamos no maravilhoso mundo da programação. Mas não é a primeira pergunta correta que devemos nos fazer, mas:

TENHO A CAPACIDADE ANALÍTICA NECESSÁRIA PARA ANALISAR UM PROBLEMA, EXTRAIR SEUS ELEMENTOS E EXIBIR UMA RESPOSTA?

E certamente aprender a programar em qualquer uma das linguagens mais comuns ou poderosas tem muitos benefícios inegáveis. Por nos fornecer as ferramentas necessárias para desenvolver nossos próprios aplicativos, nos ajuda a localizar problemas em dispositivos tecnológicos e nos abre portas no mercado de trabalho, mas a programação é apenas uma pequena parte da informática.

Enquanto Programar ou escrever código consiste em ensinar um computador (por meio de um aplicativo, software ou sistema) a realizar uma operação específica, após um Opção X realizado por um operador ou um Evento X por ou no mesmo Hardware ou Software que o suporta; Os princípios da Ciência da Computação (Informática / Sistemas) eles nos ensinam habilidades de raciocínio e lógica que são úteis em outras áreas além da tecnologia. A ciência da computação, em essência, ensina como processar e representar informações.

Portanto, considero esta a forma mais adequada de Aprenda a programar.

Eu explico, tomando como exemplo, esse outro post chamado Não aprenda a programar. Aprenda a pensar » de Yevgeny Brikman, onde este engenheiro resume a diferença entre saber programar e saber pensar como um cientista da computação com esta analogia:

Por mais onipresente que seja uma tecnologia, isso não nos faz aprendê-la quando a estudamos em um Centro de aprendizagem. Como exemplo, poderíamos tomar que quase qualquer pessoa em algum momento da vida já voou em um avião, mas a partir daí até obter a licença de piloto, há um longo caminho a percorrer, que geralmente não faz parte do estudos formais de uma pessoa, mas estudos muito particulares sobre uma área específica.

Explicado com mais detalhes, isso significa que o conhecimento que qualquer um pode ter sobre como os aviões funcionam, basicamente, muitos de nós temos desde o ensino médio e universitário ou em qualquer carreira técnica (engenharia), como física e matemática que nos ajudam a entender como as forças presentes no vôo e os elementos externos como gravidade, pressão atmosférica, velocidade, fricção ou sustentação. E assim como a biologia nos ajuda a entender como um ser humano se comporta na altura X, ou como é afetado pela falta de oxigênio e pelo frio extremo. Ou a história que nos permite conhecer o processo que deu origem à criação dos aviões e que papel eles desempenham no transporte e no comércio. Todos esses conhecimentos juntos adquiridos em um centro de ensino, de várias áreas do conhecimento, nos dão uma ideia geral do que é um avião e como ele funciona. Os assuntos gerais nos ajudam a entender uma ampla variedade de problemas, incluindo como os aviões voam. Algo muito diferente de uma disciplina especializada que só ensina a operar uma dessas máquinas, uma espécie de avião. Portanto, pelo mesmo motivo, devemos nos concentrar no estudo da Ciência da Computação, e não apenas em programação. Visto que enquanto a Ciência da Computação nos ensina globalmente a pensar em um sentido geral (sistêmico), a programação é apenas uma ferramenta que nos permite traduzir uma ideia ou problema Y por meio de um código X, previamente analisado (correta ou incorretamente).

Este e muitos outros pontos de vista contribuídos por Yevgeny Brikman em sua postagem sobre o que Programar é apenas uma parte de um conhecimento mais amplo embutido no Ciência da Computação, que são essenciais para todo programador.

Finalmente, lembre-se de avançar de forma autodidata aprendendo sobre os comandos mais importantes de GNU / Linux para continuar avançando conhecimento que eles usarão posteriormente, e que tudo o que é apresentado aqui sobre o desenvolvimento de alguns módulo, função, variável, comando ou ação em geral, pode ser realizado de diferentes formas ou métodos alternativos, diferentes dos aqui descritos.

Abaixo de Screencast feito por mim, onde você pode ver como este módulo é executado, módulos anteriores ou posteriores a serem ensinados, para que você possa ver o potencial do Shell Scripting em um nível médio (não avançado):

LPI-SB8 Test ScreenCast

(LINUX POST INSTALL - SCRIPT BICENTENNIAL 8.0.0) - Parte 2


2 comentários, deixe o seu

Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   Outro que aconteceu dito

    Se eu entendi corretamente. Você pede ao usuário para inserir seu nome de usuário ... bem. E depois de inserir sua senha ... e acontece que a senha é "lpi * sb8" ... e que está "codificada" no script.

    Se o usuário tiver acesso de leitura ao script… bingo !!… ele já sabe qual nome de usuário e senha deve inserir !!!

    Não sei se cometi um erro sobre algo ... mas se for, isso é muito inseguro ...

  2.   Eng. José Albert dito

    Verdadeiro! Dei um método agora, todo mundo com aquela curiosidade inata que caracteriza a raça humana deve buscar seu aperfeiçoamento ou fortalecimento nas filas de segurança.