Oi Keppler... meus comentários abaixo e boa sorte!

Keppler Alecrim wrote:
> Olá ,
>         Como recomendado pelo Julio,estou colocando meu script novamente
> para pegar porrada :). Fiquem a vontade para comentar.
> 
> lenin /usr/local/usbkeys # cat bin/usbkeys_check
> #!/bin/bash
> #Created by Francisco Alecrim ([EMAIL PROTECTED])
> [EMAIL PROTECTED]
> 
> WHOAMI=`echo $USER`

WHOAMI=$USER    # a nova variável é a própria variável $USER

> if [ `/bin/cat /etc/usbkeys | grep  $WHOAMI | wc -l` -lt 1 ];

if [[ $(grep -c $WHOAMI /etc/usbkeys) -lt 1 ]]          # com [[ ]] vc usa uma 
função interna do bash, com grep -c vc elimina mais um pipe


>         then
>                 echo 'Logando...';
>                 exit 0
>         else
>                 if [ -e /proc/bus/usb/devices ];
                  if [[ -e /proc/bus/usb/devices ]]  # o ";" é desnecessário
>                         then
>                                 for registered in `cat /etc/usbkeys | grep 
> $WHOAMI | cut -f2 -d_`
>                                         do
>                                                 echo $registered

                                                 # em vez dos laços não poderia 
ser algo como:
                                                
                                                if egrep -qs 
"SerialNumber.*$registered" /proc/bus/usb/devices
                                                then
                                                        echo 'Logando...'
                                                        exit 0
                                                fi



>                                                 for present in `cat 
> /proc/bus/usb/devices | grep "SerialNumber" | cut -c 18-`
>                                                         do
>                                                                 if [ 
> $registered = $present ];
>                                                                         then
                                                                                
echo "Logando..."
                                                                                
exit 0
>                                                                 fi
>                                                         done
>                                         done
>                         fi
> fi
> echo  "Erro : Put USB "
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> lenin /usr/local/usbkeys # cat README
> Author
>         Created by Francisco Alecrim ([EMAIL PROTECTED])
> Objective
>         The objective of this work is to obtain a grade in activities
> related with TSSO(Topicos Selecionados em Sistemas Operacioans) lectured by
> Ilias Biris at UFAM(Universidade Federal do Amazonas).
> License
>         GPL
> Description
>         The program controls user's login.It just allows the login of some
> users with a certain USB device plugged.Users that are with username on file
> /etc/usbkeys needs to plug the USB device related with your login,if not the
> login will be canceled.For those not listed on /etc/usbkeys,the login will
> be normal.
> Installing
>    Getting a USB serial number
>         # cat /proc/bus/usb/devices | grep "SerialNumber" | cut -c 18- >
> /tmp/usb_before

# bom, em geral por que fazer cat arquivo | grep padrão | cut , etc, etc em vez 
de grep padrao arquivo | cut etc, etc... Outra coisa
# a forma cut -c 18- nesse caso talvez ficasse melhor como cut -d'=' -f2



>         Plug you USB device
>         # cat /proc/bus/usb/devices | grep "SerialNumber" | cut -c 18- >
> /tmp/usb_after
>         # diff /tmp/usb_before  /tmp/usb_after | grep '>' | cut -f2 -d' ' |
> head -1
>         The number resulted of this operations is your USB serial key.
> 
>    Creating a list of keys
>         Create a file
>         # touch /etc/usbkeys
>         The format of a entry is username_usbserialkey ,one entry per
> line,for example :
>         teste_07912C401201B8A3
>         alecrim_06A06640F2E2A88F
> 
>    Copy bin/usbkeys_check for /usr/local/bin.
> 
>         # cp bin/usbkeys_check /usr/local/bin
> 
>    Add to the end of /etc/bash.bashrc and /etc/gdm/PostLogin/Default lines :
>         if [ `/usr/local/usbkeys/bin/usbkeys_check | grep "Logando" | wc
> -l`  -ne 1 ];
>                 then
>                         logout
>         fi
> 
> 
>    This file(/etc/bash.bashrc) is executed during login on shell.It's going
> to check if login is available on SHELL.
>    This file(/etc/gdm/PostLogin/Default) during desktop environment start
> using GDM.It's going to check if login is available on desktop environment.
> 
> 
> Comments
>          Francisco Alecrim ( [EMAIL PROTECTED] )
> 
> lenin /usr/local/usbkeys #
> 
> 
> 
> 
> 
> 
> On 8/9/06, Julio C. Neves <[EMAIL PROTECTED]> wrote:
>> Fala Keppler,
>> <OT>
>> antes de mais nada gostaria de dizer que durante o II Encontro de Software
>> Livre do Amazonas, muitíssimo bem organizado pela Comunidade Sol, travei
>> conhecimento com que o Instituto Nokia de Tecnologia (INdT) está
>> produzindo
>> e fiquei impressionado. Parabéns!
>> </OT>
>>
>> Bem voltando ao tema da lista: diversas vezes vc usou grep e em seguida um
>> wc -l. Isso não é necessário, já que a opção -c do grep te devolve a qtd
>> de
>> linhas que possuem a cadeia que vc está pesquisando.
>>
>> O cmd for tem um monte de sintaxes (para conhecer estas sintaxes veja em
>> www.julioneves.com o Papo de Botequim V e o VI) mas, na mais elementar,
>> ele
>> assume cada um dos valores de uma lista. Então onde vc fez:
>>
>>
>> for(( i=1 ; i<= numLinhas ; i++))
>> do
>>         Linha=`cat /proc/bus/usb/devices | grep "SerialNumber" | cut -c
>> 18-
>> | sort | head -$i | tail -1`
>>
>> poderia ter feito:
>>
>> for Linha in `cat /proc/bus/usb/devices | grep "SerialNumber" | cut -c 18-
>> |
>> sort`
>> do
>>        ...
>>
>> O programa é muito longo e não tenho tempo de entender toda a sua lógica,
>> porém aplicando estas dicas que dei ele já encolherá bastante. Depois das
>> alterações que serão sugeridas pelos colegas, coloque-o novamente na lista
>> para nova rodada de comentários.
>>
>> --
>> Abraços,
>> Julio
>> http://www.julioneves.com - Um livro sobre Bash completo e on-line
>> :wq
>>
>> 2006/8/9, Keppler Alecrim <[EMAIL PROTECTED]>:
>>
>>> Pow nao sabia que nao ia anexo.
>>>
>>>
>>> lenin /usr/local/usbkeys # cat bin/usbkeys_check
>>> #!/bin/bash
>>> #Create by Michel Cunha and Karane Vieira
>>> #Modified by Francisco Alecrim ([EMAIL PROTECTED])
>>> #WHOAMI=`/usr/bin/whoami`
>>> WHOAMI=`echo $USER`
>>> echo $USER
>>>
>>> #Checking if user needs USB KEY
>>> NUM_OCCURRENCE=`/bin/cat /etc/usbkeys | grep $WHOAMI | wc -l`
>>> if [ $NUM_OCCURRENCE -lt 1 ];
>>>         then
>>>                 echo 'Do not need USB KEY! Logando ';
>>>                 #exec /bin/bash
>>>                 exit 0
>>>         else
>>>                 echo 'Needs USB KEY';
>>> fi
>>>
>>>
>>> #Getting USB KEYS registered
>>> if [ -e /proc/bus/usb/devices ];
>>>         then
>>>                 echo 'CAN find : /proc/bus/usb/devices';
>>>                 DEVICES=`cat /proc/bus/usb/devices | grep "SerialNumber"
>> |
>>> cut -c 18-`
>>>                 numLinhas=`cat /proc/bus/usb/devices | grep
>> "SerialNumber"
>>> |
>>> cut -c 18- | wc -l`
>>>         else
>>>                 echo 'Cannot find : /proc/bus/usb/devices';
>>>                 exit 0;
>>> fi
>>>
>>>
>>> echo -ne "Numeros de Serie no Sistema = $numLinhas\n"
>>>
>>> for(( i=1 ; i<= numLinhas ; i++))
>>> do
>>>         Linha=`cat /proc/bus/usb/devices | grep "SerialNumber" | cut -c
>>> 18-
>>> | sort | head -$i | tail -1`
>>>         numLinhasArquivo=`/bin/cat /etc/usbkeys | wc -l`
>>>         for((j=1 ; j<= numLinhasArquivo ; j++))
>>>         do
>>>                 LinhaArquivo=`/bin/cat /etc/usbkeys | grep $WHOAMI | cut
>>> -f2
>>> -d'_'| sort | head -$j | tail -1`
>>>                 echo -ne "Verificando ... $Linha = $LinhaArquivo\n"
>>>                 if [ $Linha = $LinhaArquivo ];
>>>                         then
>>>                         echo -ne "Numero de Serie Encontrado. Logando no
>>> Sistema ... \n"
>>>                         #exec /bin/bash
>>>                         exit
>>>                 fi
>>>         done
>>>         echo -ne "Linha$i - $Linha\n"
>>> done
>>>
>>> echo -ne "\n Voce não foi autorizado a Entrar no Sistema. Saindo...\n"
>>> logout
>>> lenin /usr/local/usbkeys # cat README
>>> Author
>>>         Created by Francisco Alecrim ([EMAIL PROTECTED])
>>> Objective
>>>         The objective of this work is to obtain a grade in activities
>>> related with TSSO(Topicos Selecionados em Sistemas Operacioans) lectured
>>> by
>>> Ilias Biris at UFAM(Universidade Federal do Amazonas).
>>> License
>>>         GPL
>>> Description
>>>         The program controls user's login.It just allows the login of
>> some
>>> users with a certain USB device plugged.Users that are with username on
>>> file
>>> /etc/usbkeys needs to plug the USB device related with your login,if not
>>> the
>>> login will be canceled.For those not listed on /etc/usbkeys,the login
>> will
>>> be normal.
>>>
>>> Installing
>>>    Getting a USB serial number
>>>         # cat /proc/bus/usb/devices | grep "SerialNumber" | cut -c 18- >
>>> /tmp/usb_before
>>>         Plug you USB device
>>>         # cat /proc/bus/usb/devices | grep "SerialNumber" | cut -c 18- >
>>> /tmp/usb_after
>>>         # diff /tmp/usb_before  /tmp/usb_after | grep '>' | cut -f2 -d'
>> '
>>> |
>>> head -1
>>>         The number resulted of this operations is your USB serial key.
>>>
>>>    Creating a list of keys
>>>         Create a file
>>>         # touch /etc/usbkeys
>>>         The format of a entry is username_usbserialkey ,one entry per
>>> line,for example :
>>>         teste_07912C401201B8A3
>>>         alecrim_06A06640F2E2A88F
>>>
>>>    Copy bin/usbkeys_check for /usr/local/bin.
>>>
>>>         # cp bin/usbkeys_check /usr/local/bin
>>>
>>>    Add to the end of /etc/bash.bashrc lines :
>>>
>>>         RES=`/usr/local/bin/usbkeys_check | grep "Logando" | wc -l`
>>>         if [ $RES -ne 1 ];
>>>                 then
>>>                         logout
>>>         fi
>>>
>>>    This file(/etc/bash.bashrc) is executed during login on shell.It's
>>> going
>>> to check if login is available on SHELL.
>>>
>>>    Copy /etc/gdm/PostLogin/Default.sample /etc/gdm/PostLogin/Default
>>>    Add to the end of /etc/gdm/PostLogin/Default line :
>>>
>>>         /usr/local/bin/usbkeys_check > /tmp/log_usbkey
>>>
>>>    This file(/etc/gdm/PostLogin/Default) during desktop environment
>> start
>>> using GDM.It's going to check if login is available on desktop
>>> environment.
>>>
>>>
>>> Comments
>>>          Francisco Alecrim ( [EMAIL PROTECTED] )
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> lenin /usr/local/usbkeys #
>>>
>>>
>>> On 8/9/06, Fernando Zank <[EMAIL PROTECTED]> wrote:
>>>> não vai anexo para a lista:
>>>>
>>>> Me mando o seu script para eu ver se possível, obrigado
>>>> On 8/9/06, Keppler Alecrim < [EMAIL PROTECTED]> wrote:
>>>>
>>>>> Olá ,
>>>>> Esta é a primeira vez que participo em uma lista de
>> discursão.Esperonão
>>>>> apanhar muito.
>>>>> Fiz um script simples que verfica se o usuário que está logando
>> possui
>>>>> uma
>>>>> dispositivo USB plugado,senão ele não autoriza o login. Já vi um
>> cara
>>>>> fazendo algo com gdm e smartcard.
>>>>>
>>>>> O script vai em anexo com um README sobre a como deve ser o formato
>> da
>>>>> lista
>>>>> de usuários.
>>>>>
>>>>> Aguardo comentários(bons ou ruins).
>>>>>
>>>>> PS: Estou desenvolvendo uma versão(não tem haver com esta lista,pois
>>>>> estou
>>>>> fazendo em C) para travar o boot do kernel.
>>>>>
>>>>> --
>>>>> Francisco Keppler Silva Alecrim
>>>>> Instituto Nokia de Tecnologia (INdT) - OSMRC
>>>>>
>>>>>
>>>>> [As partes desta mensagem que não continham texto foram removidas]
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> "Somos o que repetidamente fazemos, portanto a
>>>> excelência não é um feito é um hábito" - Aristóteles
>>>
>>> [As partes desta mensagem que não continham texto foram removidas]
>>>
>>>
>>>
>>
>> [As partes desta mensagem que não continham texto foram removidas]
>>
>>
>>
> 
> 
> 



---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como 
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
aviso.
---------------------------------------------------------------------
Sair da lista: [EMAIL PROTECTED]
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil

 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/shell-script/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 



Responder a