[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/