shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Shell Script Autenticado


From: Enaldo Sousa Leite
Subject: Re: [shell-script] Shell Script Autenticado
Date: Mon, 17 Apr 2006 14:40:38 -0300 (ART)

Saudacoes...

Tenho um script aki que faz login em uma base de dados
em PostgreSql... aí vc substitui a entrada em
/etc/inittab...

c1:1235:respawn:/sbin/script 38400 tty1 linux

ele não esta pronto ainda... estou mexendo nele... mas
a ideia e a maquina logar em uma base SQL e atualizar
as pastas do usuário com rsync...

#!/bin/bash
# Insere configuracoes
. /suporte/etc/suporte.conf

# Cancela o CTRL C
#trap "" 2

proxima=abertura

# loop principal
while : ; do

        case "$proxima" in

                abertura)
                # mostra na tela o texto de abertura
                proxima=verserver
                dialog --clear \
                --backtitle 'BIG Supermercados' \
                --exit-label 'SAIR' \
                --title 'Informações' \
                --textbox ${caminho}${infotxt} \
                0 0
                ;;

                verserver)
                # verifica a conexao com o servidor
                ping ${servip} -c 3 -W 5 > /dev/null
                if [ "$?" = "0" ]; then
                # Servidor esta online
                anterior=abertura
                proxima=login
                dialog --clear \
                --cr-wrap \
                --sleep 5 \
                --title 'Servidor de Arquivos' \
                --infobox 'Conexão estabelecida com sucesso!' \
                3 40
                else
                # servidor esta indisponivel
                # efetua login local
                anterior=abertura
                dialog --clear \
                --title 'Servidor de Arquivos' \
                --msgbox 'Servidor Não Responde' \
                3 45
                break
                fi
                ;;

                login)
                # Inicia a checagem de usuario
                anterior=abertura
                proxima=verlogin
                login=$(dialog --clear \
                --stdout \
                --backtitle 'BIG Supermercados' \
                --title 'Digite seu Usuário' \
                --cancel-label 'Voltar' \
                --inputbox 'Usuário:' 0 0)
                ;;

                verlogin)
                # verificar se o usuario existe no banco
                verusu=`/usr/pgsql/bin/psql -t -h 192.0.1.13 -U
postgres -d migralinux -c "SELECT COUNT (*) FROM
migralinux WHERE lnx_user='${login}'"`
                if [ ${verusu} = 1 ]; then
                        # verificar se o diretorio do usuario existe em
home.
                        # caso nao exista ele sera criado.
                        if [ ! -d "/home/${login}" ]; then
                        mkdir -p /home/${login}
                        fi
                proxima=senha
                else
                # usuario nao existe
                proxima=login
                dialog                                            \
                --title 'Erro'                             \
                --msgbox "Usuário: '${login}' não existe."  \
                6 40
                fi
                ;;

                senha)
                # Inicia a checagem da senha
                anterior=login
                proxima=versenha
                senha=$(dialog --clear \
                --stdout \
                --backtitle 'BIG Supermercados' \
                --title 'Digite a senha para '${login}'' \
                --cancel-label 'Voltar' \
                --passwordbox 'Senha:' 0 0)
                ;;

                versenha)
                # verificar se a senha é valida
                verpwd=`/usr/pgsql/bin/psql -t -h 192.0.1.13 -U
postgres -d migralinux -c "SELECT COUNT (*) FROM
migralinux WHERE lnx_user='${login}' and
lnx_pwd='${senha}'"`
                if [ ${verpwd} = 1 ]; then
                proxima=veronline
                else
                # senha incorreta
                proxima=senha
                dialog \
                --title 'Erro' \
                --msgbox "Senha Errada" \
                6 40
                fi
                ;;

                veronline)
                # verifica se o usuario esta online em outra estacao
                veronline=`/usr/pgsql/bin/psql -t -h 192.0.1.13 -U
postgres -d migralinux -c "SELECT lnx_online FROM
migralinux WHERE lnx_user='${login}' and
lnx_pwd='${senha}'"`
                if [ ${veronline} = 0 ]; then
                proxima=sync
                else
                onlineip=`/usr/pgsql/bin/psql -t -h 192.0.1.13 -U
postgres -d migralinux -c "SELECT lnx_ip FROM
migralinux WHERE lnx_user='${login}' and
lnx_pwd='${senha}'"`
                onlinedata=`/usr/pgsql/bin/psql -t -h 192.0.1.13 -U
postgres -d migralinux -c "SELECT lnx_data FROM
migralinux WHERE lnx_user='${login}' and
lnx_pwd='${senha}'"`
                onlinehora=`/usr/pgsql/bin/psql -t -h 192.0.1.13 -U
postgres -d migralinux -c "SELECT lnx_hora FROM
migralinux WHERE lnx_user='${login}' and
lnx_pwd='${senha}'"`
                dialog                                          \
                --title 'AVISO'                              \
                --yes-label 'SIM'                              \
                --no-label 'NÃO'                              \
                --yesno "\n 
                        O usuario ja esta em uso em outro terminal. \n 
                        Usuario: '${login}' \n
                        Data: '${onlinedata}' \n
                        Hora: '${onlinehora}' \n
                        IP: '${onlineip}' \n
                        Você quer desconecta-lo agora?\n\n" \
                        0 0

                        if [ $? = 0 ]; then
                        # Desconectar usuario - SIM
                        echo "Agora são: $( date )"
                        break
                        else
                        # Desconectar usuario - NAO
                        proxima=login
                        fi
                fi
                ;;
                sync)
                proxima=finaliza
                # sincroniza os arquivos do usuario
                /suporte/bin/atualiza.exp ${login} ${servip}
${senha}
                ;;

                finaliza)
                # atualiza valor de lnx_online para 1.
                # grava ip, data e hora.
                break
                ;;
                                                      
              
                *)
                echo "Janela desconhecida '$proxima'."
                echo Abortando programa...
                exit
      esac
  
      # Aqui é feito o tratamento genérico de Código
de Retorno
      # de todas as telas. Volta para a tela anterior
se for
      # CANCELAR, sair do programa se for ESC.
      retorno=$?
      [ $retorno -eq 1   ] && proxima=$anterior   #
cancelar
      [ $retorno -eq 255 ] && break   # Esc

done


--- "Renato L. Sousa" <address@hidden>
escreveu:

> Olá amigos,
> 
> Tenho um shell script que cria usuários no sistema. 
> Para tal o usuário 
> deve estar "logado" como root.
> Gostaria de alterar esse script para que ele peça o
> nome do usuário e a 
> senha para fazer um log mais efetivo sobre qual o
> usuário que está 
> utilizando esse script.
> Mas o problema é que nem sei por onde começar!!!
> O shell implementa alguma biblioteca ou função que
> faça isso ?
> 
> Obrigado a todos,
> 
> Renato L. Sousa
> 
> -- 
>
----------------------------------------------------------------------
> Renato L. Sousa - Técnico de Informática
> Serviço Técnico de Informática - STI/FAAC
> UNESP - Campus de Bauru
> 
> 


Enaldo S. Leite
address@hidden


                
_______________________________________________________ 
Abra sua conta no Yahoo! Mail: 1GB de espaço, alertas de e-mail no celular e 
anti-spam realmente eficaz. 
http://br.info.mail.yahoo.com/


reply via email to

[Prev in Thread] Current Thread [Next in Thread]