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`
if [ `/bin/cat /etc/usbkeys | grep $WHOAMI | wc -l` -lt 1 ];
then
echo 'Logando...';
exit 0
else
if [ -e /proc/bus/usb/devices ];
then
for registered in `cat /etc/usbkeys | grep
$WHOAMI | cut -f2 -d_`
do
echo $registered
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
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]
>
>
>
--
--
Francisco Keppler Silva Alecrim
Instituto Nokia de Tecnologia (INdT) - OSMRC
[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