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

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

RES: [shell-script] Validar se existe umusuário ...


From: Pedro Henrique Ponchio
Subject: RES: [shell-script] Validar se existe umusuário ...
Date: Tue, 21 Aug 2001 17:18:02 -0300

 
Muito obrigado pela sua ajuda, estou aqui tentando há algum tempo mas
não consegui fazer o seu exemplo funcionar. Sou meio newbie em shell,
mas se tiver interesse, segue o script inteiro ...
 
 
[[]]´s
Pedro
 
#!/bin/bash
# Script que apaga e-mails do usuário
 
function usage
{
        echo
        echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
        echo " Modo de usar: "
        echo " \"$0\" 'nome_do_usuário'"
        echo
        echo "= !Somente como root pode-se apagar e-mail de qqer um! ="
        echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
        echo
        exit 1
}
 
ARGS=1
if [ ! -n "$1" ] ; then
        usage
fi
 
if [ $# -gt "$ARGS" ] ; then
        usage
fi
 
POS=$1
echo
echo " == Iniciando Apagador de e-mails == "
sleep 2

# if [ "`cat /etc/passwd | cut -d: -f1 | grep $1`" = "" ] ; then   ->
opções provavelmente válidas
# if [ "`cut -f1 -d: /etc/passwd | grep $1`" = "" ] ; then

if [ "`grep -q "^$1:" /etc/passwd`" = "" ]  ; then
        echo "Usuário '$POS' não existe. Saindo ..."
        exit 1
else
        echo "Checando se há mensagens para o usuário '$POS' ..."
fi
 
ARQUIVO=/var/spool/mail/${POS}
TAMANHO=`ls -lah /var/spool/mail | grep ${POS} | awk '{print $5}'`
 
if [ -s $ARQUIVO ] ; then
        echo
        echo "O tamanho do mail do usuário $POS é $TAMANHO."
        echo "Apagando ..."
        sleep 2
        cat /dev/null > $ARQUIVO
        echo "Pronto! Checando se foi apagado ..."
        if [ "`ls -la /var/spool/mail | grep ${POS} | awk '{print $5}'`"
-eq "0" ] ; then
                echo "Email apagado com sucesso."
                echo
                exit 0
        else
                echo "Parece que ainda temos alguns e-mails ... olhe
só:"
                SHOW=`ls -lah /var/spol/mail | grep ${POS}`
                echo $SHOW
                echo
                exit 1
        fi
else
        echo
        sleep 2
        echo "O usuário ${POS} não tem mail."
        echo
        exit 0
fi

 

-----Mensagem original-----
De: address@hidden [mailto:address@hidden]
Enviada em: Tuesday, August 21, 2001 3:56 PM
Para: address@hidden
Assunto: Re: [shell-script] Validar se existe umusuário ...



Pessoal
     Observando a resposta do Daniel, me lembrei de uma dica que diminui
o
tempo de execução de qualquer script, porque não é criado um processo a
mais no UNIX.

     A dica é a seguinte:

Em lugar de um comando no formato

cat arquivo | cut -f x -dy

É muito mais rápido

cut -f x -d y arquivo

pois o comando cut pode ler de um arquivo e não é necessário mostrar o
arquivo via cat, liga-lo com o pipe com o cut para cortar alguma
informação
do mesmo.

A primeira forma do comando, com pipe, deve ser usada somente se for
necessário "cortar" o resultado de algum comando e nao de um único
arquivo.

Agora em relação ao script proposto poderiamos substituir o primeiro if
pelo seguinte comando com a mesma funcionalidade

if grep -q   "^$1:"    /etc/passwd; then

A opção -q do grep simplesmente indica no Returno Code se o texto
procurado
existe ou não no arquivo. O texto procurado utiliza expressão regular,
onde
'^' significa o inicio da linha, seguido do nome do usuario procurado
'$1'
seguido do separador ':'.

Abraços a todos

José Augusto Martins Nieviadonski
HSBC Bank Brasil - Banco Múltiplo
Treinamento de Informática



                      
                      
                      
                      
                      
                      
                      


Enviado Por : Daniel Duclos <address@hidden> - 21/08/01 15:37
        Responder a shell-script

Para:  <address@hidden>
cc:    (cco: Jose NIEVIADONSKI/HBBR/HSBC)
Assunto: Re: [shell-script] Validar se existe um usuário ...


On Tue, 21 Aug 2001, Pedro Henrique Ponchio wrote:

> Olá galera,
>
> Precisava de alguma dica sobre como validar se existe determinado
> usuário passado num argumento ...
>
> Verificar se foi escrito corretamente o nome do usuário e só continuar
a
> execução do programa se estiver correto ...


#!/bin/bash
if [ "`cat /etc/passwd | cut -d: -f1 | grep $1`" = "" ]; then
        echo "usuario nao existe"
else
        echo "usuario existe"
fi

Claro, substitua os echos por qualquer acao que quiser... crie funcoes
pra
ficar mais legivel e tal... acho q eh por ai...

qualquer coisa, masnde mais dicas...

;)

Daniel Lobato Duclos - address@hidden -
http://www.cybershark.net <http://www.cybershark.net> 
------------------------------------------------------------------------
---
Stand for something, or you will fall for nothing.
( http://www.gnu.org/philosophy/pragmatic.html)
<http://www.gnu.org/philosophy/pragmatic.html)> 



Sair da lista: address@hidden
Banco Dados:   http://www.egroups.com/group/shell-script
<http://www.egroups.com/group/shell-script> 

Seu uso do Yahoo! Groups é sujeito às regras descritas em:
http://docs.yahoo.com/info/terms/ <http://docs.yahoo.com/info/terms/> 








This message and any attachments are confidential to the ordinary user
of
the e-mail address to which it was addressed and may also be privileged.
If
you are not the adressee you may not copy, forward, disclose or use any
part of the message or its attachments and if you have received this
message in error, please notify the sender immediately by return e-mail
and
delete it from your system.
Internet communications cannot be guaranteed to be secure or error-free
as
information could be intercepted, corrupted, lost, arrive late or
contain
viruses. The sender therefore does not accept liability for any errors
or
omissions in the context of this message which arise as a result of
Internet transmission.



Yahoo! Groups Sponsor   
 
<http://rd.yahoo.com/M=210949.1523302.3121208.1269402/D=egroupweb/S=1705
006580:HM/A=763786/R=0/*http://altfarm.mediaplex.com/ad/ck/1177-4458-103
9-1?mpt=998420627>      
 
<http://us.adserver.yahoo.com/l?M=210949.1523302.3121208.1269402/D=egrou
pmail/S=1705006580:HM/A=763786/rand=632894043>  

Sair da lista: address@hidden
Banco Dados:   http://www.egroups.com/group/shell-script
<http://www.egroups.com/group/shell-script>  

Seu uso do Yahoo! Groups é sujeito aos Termos do Serviço Yahoo!
<http://docs.yahoo.com/info/terms/> . 




reply via email to

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