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

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

Re: [shell-script-pt] Usando yad como interface para o pass


From: Julio C. Neves
Subject: Re: [shell-script-pt] Usando yad como interface para o pass
Date: Wed, 24 Jun 2020 16:31:53 -0300

Quero parar para entender a solução, mas como não tenho o Opera, complicou um pouco. O grande barato do Shell é isso que o Ulisses fez: criar soluções rápidas para problemas aparentemente insolúveis. Um cara que não conhece Shell, olha pro seu mouse, senta no meio fio e chora. O Ulisses, que está super empolgado com Shell, foi buscar a solução.

Acho isso lindo!

Abraços,
Julio

» Não tem tempo para fazer um curso presencial?
» Na sua cidade não tem nenhum bom curso de Linux?
Somente nesta semana de 15-19/06, as inscrições estarão
abertas para uma nova turma. Veja mais detalhes em:

Também damos treinamento em sua empresa
em qualquer cidadecom certificado e nota fiscal.







Em qua., 24 de jun. de 2020 às 10:44, Raul Libório <rauhmaru@gmail.com> escreveu:
Parabéns Ulisses, bem bolada a sua solução. Ficou bacana.
E ao mestre Julio, como sempre, nos brinda com essas aulas de shell script. Fantástico!

Em qua., 24 de jun. de 2020 às 10:03, Julio C. Neves <julio.neves@gmail.com> escreveu:
Grande Ulisses,
Esse cara que te respondeu, o Fernando Mercês, é o papa da segurança no Brasil e, como não poderia deixar de ser, conhece muuuuuito Shell. Seu único defeito é não instalar um Debian ou um Fedora no seu Apple, para desfrutar do YAD... KKKKK   # (comentário) Nando, não resisti...

Devido a isso, tudo que ele falou está super correto. Sobre a caixa alta, veja isso:
$ export | wc -l
43
Isso significa que nesse exato momento o Shell está disponibilizando 43 variáveis (muitas que não conheço) todas com letras maiúsculas. Assim sendo, duas coisas ocorrem:
  1. A possibilidade de criar uma variável homônima é grande e já apanhei para descobrir um erro desses em um prg de outrem;
  2. Dificulta a leitura do prg, pois nunca se sabe se a variável é local ou do sistema.
A outra coisa que ele falou foi da evolução do cmd test. Começou como test, depois apareceu o [ ... ] e a partir do bash 3.NN apareceu a notação [[ ... ]] com mais recursos e com diversas implementações.

Queria colocar mais uma coisa.

Vc fez:
SEARCH=$(yad --title "Password search" --entry --entry-label="Search: " \
--button=gtk-cancel:1 --button=gtk-ok:0)
Isso tem o mesmo efeito de :
SEARCH=$(yad --title "Password search" --entry --entry-label="Search: ")
Pois esses 2 botões são padrão

Vc fez:
RESULTS=$(find ~/.password-store/ ! -path *.git/* -type f -iname *$SEARCH*)
if [ "$?" == "1" ]; then
exit 0
fi
Aqui tem um erro, não é advertência. Jamais deixe um *, um ?, ... qq coringa de bobeira para o Shell expandir. Experimente fazer:
$ SEARCH=a
e executar essa linha. Zebra!!! Pq deu zebra? Pq o Shell (e não o find) expandiu o nome do arquivo e pesquisou, no diretório corrente, todos os arquivos que continha a letra "a" no nome. O correto seria -iname "*$SEARCH*" ou -iname \*$SEARCH\*
Outro caso, eu sempre digo que 99% das vezes o if (ou test, ou [ ... ], ou [[ ... ]]) junto com $? é pleonasmo. Ambos foram feitos para testar instrução e como o $? é o retorno do cmd, pq não testá-lo direto, assim:
RESULTS=$(find ~/.password-store/ ! -path *.git/* -type f -iname *$SEARCH*) || exit # o zero é padrão

No grupo:
GPGFILE=$(yad --title "Password search" --button="Back to search":1 --button=gtk-ok:0 \
--width 300 --height=400 --list --column=Password <<< $(basename -s .gpg -a $RESULTS))
if [ "$?" == "1" ]; then
continue
fi

Vale a observação do $? agravado por uma circunstância: se vc fechar o diálogo naquele xizinho na parte superior direita, $?=256 e GPGFILE estará vazia dando encrenca após.
Só mais uma obs:
$ Prg=/etc/acpi/events/ibm-wireless
$ Var=$(basename $Prg); echo $Var
ibm-wireless
$ Var=${Prg##*/}; echo $Var
ibm-wireless

Sendo o segundo muuuuito mais rápido. Não tentei entender a lógica do seu prg por falta de tempo, mas será que não dá para trocar?

Abraços,
Julio

» Não tem tempo para fazer um curso presencial?
» Na sua cidade não tem nenhum bom curso de Linux?
Somente nesta semana de 15-19/06, as inscrições estarão
abertas para uma nova turma. Veja mais detalhes em:

Também damos treinamento em sua empresa
em qualquer cidadecom certificado e nota fiscal.







Em ter., 23 de jun. de 2020 às 23:50, Fernando Mercês <nandu88@gmail.com> escreveu:
Parabéns pela solução, Ulisses. Acho muito legal essa vibe de "se não tem, eu vou lá e crio!" hehe. :-)

Não tenho o yad aqui (infelizmente não tem no macOS ainda) mas como recomendações gerais eu acho que você poderia evitar variáveis com tudo maiúsculo, pois vai que acerta uma de ambiente né? rsrs

Outra coisa: eu li em algum lugar que o [ tá obsoleto e devemos usar o [[ sempre. Não lembro da referência agora, mas vale pesquisar.

Ah, você pode substituir:

if [ isso ]; then aquilo; fi

Por:

[[ isso ]] && aquilo

Em prol da legibilidade, também mudaria while :; pra while true; 🙂

Abraços!


On Tue, Jun 23, 2020 at 7:40 PM Ulisses Alves por (shell-script-pt) <shell-script-pt@nongnu.org> wrote:
Olá, pessoal. 
Recentemente eu resolvi trocar de navegador e adotei o Ópera.
Além disso, eu usava também até pouco tempo o lastpass como gerenciador de senhas.
Tomei conhecimento do gerenciador chamado pass, que como diz no próprio site deles, é o gerenciador de senhas padrão do Unix.
Após implementar o seu uso no meu computador pessoal e gostar muito, percebi que precisaria também de uma extensão para o Ópera, 
pra que fosse possível buscar e auto-completar os campos de login dos sites que visito. Para a minha surpresa, vi que não existe uma extensão para o pass no Ópera (até onde pesquisei).

Enfim, após isso e aproveitando todo o conhecimento que estou adquirindo no curso de shell do prof. Júlio, resolvi tentar implementar uma interface gráfica bem simples que me possibilite buscar senhas no meu cofre e copiá-las para o clipboard.
Segue então o script que consegui fazer. Obviamente, qualquer sugestão de correção e/ou melhoria é mais que bem vinda.

##################################################################################################

#!/bin/bash

while :; do

SEARCH=$(yad --title "Password search" --entry --entry-label="Search: " \
--button=gtk-cancel:1 --button=gtk-ok:0)

RESULTS=$(find ~/.password-store/ ! -path *.git/* -type f -iname *$SEARCH*)

if [ "$?" == "1" ]; then
exit 0
fi

if [ -z "$RESULTS" ]; then
yad --title "Password search" --text "No matches found!"
exit 0
fi

GPGFILE=$(yad --title "Password search" --button="Back to search":1 --button=gtk-ok:0 \
--width 300 --height=400 --list --column=Password <<< $(basename -s .gpg -a $RESULTS))

if [ "$?" == "1" ]; then
continue
fi

break
done

if [ -z "$GPGFILE" ]; then
exit 0
fi

SITEPATH=$(grep -oE "[[:alnum:]_-]+/$GPGFILE" <<< "$RESULTS")
CONTENTS=$(pass "$SITEPATH")

yad --title "Password search" --button="Copy password to clipboard":1 \
--button="Exit" --height=300 --width 500 --text-info <<< "$CONTENTS"

if [ "$?" == "1" ]; then
pass -c "$SITEPATH"
fi

##################################################################################################


Respeitosamente,

Ulisses Alves
"UOLAYFIRERTRUAESBEILHIDUBGSCNOKLYFUROUSOECYACSSSTUSNOIKHOYLHOSAUEBMLOEC"
image

Sent with ProtonMail Secure Email.

_______________________________________________
Lista brasileira de usuários de shell script
Endereço de e-mail da lista: shell-script-pt@nongnu.org
Para se inscrever ou desinscrever acesse: https://lists.nongnu.org/mailman/listinfo/shell-script-pt
Para ver os arquivos da lista (mensagens anteriores) e pesquisar nelas, acesse https://lists.nongnu.org/archive/html/shell-script-pt/

NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor utilize somente esta.
_______________________________________________
Lista brasileira de usuários de shell script
Endereço de e-mail da lista: shell-script-pt@nongnu.org
Para se inscrever ou desinscrever acesse: https://lists.nongnu.org/mailman/listinfo/shell-script-pt
Para ver os arquivos da lista (mensagens anteriores) e pesquisar nelas, acesse https://lists.nongnu.org/archive/html/shell-script-pt/

NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor utilize somente esta.
_______________________________________________
Lista brasileira de usuários de shell script
Endereço de e-mail da lista: shell-script-pt@nongnu.org
Para se inscrever ou desinscrever acesse: https://lists.nongnu.org/mailman/listinfo/shell-script-pt
Para ver os arquivos da lista (mensagens anteriores) e pesquisar nelas, acesse https://lists.nongnu.org/archive/html/shell-script-pt/

NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor utilize somente esta.


--
Raul Libório
http://rauhmaru.blogspot.com/
openSUSE Member | Linux User #4444581

/etc/httpd/conf.d/ssl.conf:7
# Do NOT simply read the instructions in here without understanding
# what they do.  They're here only as hints or reminders.  If you are unsure
# consult the online docs. You have been warned.
_______________________________________________
Lista brasileira de usuários de shell script
Endereço de e-mail da lista: shell-script-pt@nongnu.org
Para se inscrever ou desinscrever acesse: https://lists.nongnu.org/mailman/listinfo/shell-script-pt
Para ver os arquivos da lista (mensagens anteriores) e pesquisar nelas, acesse https://lists.nongnu.org/archive/html/shell-script-pt/

NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor utilize somente esta.

reply via email to

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