Confecção de CheckList

1. Confecção de CheckList

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 25/04/2017 - 17:41h

Pessoas .. tô afim de fazer um menu multiplas escolhas com o zenity mas pra variar não sei como fazer, até vi uns exemplos de checklist na net mais mesmo assim fiquei voando de como colocar as ações de acordo com as opções

Poderiam me auxiliar de como fazer esse menu ???

É coisa simples, tipo

* Trocar 6 por meia dúzia >>>
no caso de habilitado escreve "6" no arquivo tal onde se lê "meia dúzia"
* Escrever Maurício
no caso de habilitado escreve "Maurício" no arquivo tal
* Remove ARQUIVO
Se habilitado remove arquivo tal

Então eu precisaria q de acordo com o que foi selecionado ele checasse antes para ver se tem necessidade de fazer, por exemplo, na opção "Escrever Maurício" se habilitado só escrevesse se no arquivo não tivesse escrito "Maurício"

Na moral eu só preciso de exemplos práticos, para q assim eu possa entender como fazer !!!


  


2. Re: Confecção de CheckList

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 25/04/2017 - 19:14h

A princípio tenho isso aqui

#!/bin/bash
zenity --text="Menus de Scripts" --list --checklist \
--column "E/D" --column "Ações" \
FALSE Ação 1 \
FALSE Ação 2 \
FALSE Ação 3


como atribuo ações às opções selecionadas ???
_______________________________________________________________
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"


3. Re: Confecção de CheckList

Perfil removido
removido

(usa Nenhuma)

Enviado em 25/04/2017 - 21:55h

Mauriciodez escreveu:

A princípio tenho isso aqui

#!/bin/bash
zenity --text="Menus de Scripts" --list --checklist \
--column "E/D" --column "Ações" \
FALSE Ação 1 \
FALSE Ação 2 \
FALSE Ação 3


como atribuo ações às opções selecionadas ???
_______________________________________________________________
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"


Coloca o while no menu.


man zenity



Ex:

#!/bin/bash

clear

while true; do
choice=$(zenity --list --text "Selecione uma ação:"\
--list --column "Ação"\
--title="Ações de saída do i3" \
Desligar\
Reiniciar\
Sair);

case "${choice}" in

"Desligar" )

zenity --question --text "Você deseja desligar o computador?" echo $?
case $? in
#0) systemctl poweroff;;
0)sudo /sbin/shutdown -h now;;
1) exit;;
esac
;;

"Reiniciar" )

zenity --question --text "Você deseja reiniciar o computador?" echo $?
case $? in
#0) systemctl reboot;;
0)sudo /sbin/shutdown -r now;;
1) exit;;
esac
;;

"Sair" )

zenity --question --text "Você deseja sair do i3?" echo $?
case $? in
0) i3-msg exit;;
1) exit;;
esac
;;

*)
break
;;
esac
done






4. Re: Confecção de CheckList

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 25/04/2017 - 22:10h

meianoite escreveu:
Coloca o while no menu.
Não rola velho ... é um checklist e não um checkbox ... eu fiz um aqui q deu certo

#!/bin/bash
data=`date +%H:%M:%S`
selection=$(zenity --list --checklist \
--title='Configurações' --column=E/D --column=Ações \
FALSE "Ação 1" \
FALSE "Ação 2" \
FALSE "Ação 3")

[[ $selection = "Ação 1"* ]] && echo "Você escolheu a ação A as $data" >> ~/Público/teste.txt
[[ $selection = *"Ação 2"* ]] && echo "Você escolheu a ação B as $data" >> ~/Público/teste.txt
[[ $selection = *"Ação 3" ]] && echo "Você escolheu a ação C as $data" >> ~/Público/teste.txt


Só tem uma mensagem q está me incomodando quando dou ENTER para executar o script
mauricio@debian:~$ ./Público/zenity_menu.sh
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.


não sei a que se refere esse erro !!! mais funciona de boa

_______________________________________________________________
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"


5. Re: Confecção de CheckList

José da Silva
zenull

(usa Outra)

Enviado em 25/04/2017 - 22:33h

Você pode tirar essa mensagem redirecionando a saída de erro:
zenity --info --text="sem mensagem" 2>> /dev/null 

Sobre o script, há muitas formas de se fazer a mesma coisa.
Abaixo exemplos pro que você quer.

Com apenas uma opção:
funcao_trocar () {

sed -i "s/meia dúzia/6/" arquivo_com_meia_duzia

zenity --info --text="Trocado 6 por meia dúzia com sucesso."
}

funcao_escrever () {

cat arquivo_mauricio | grep Maurício

if [ $? = 0 ]; then
zenity --info --text="Maurício já está escrito no arquivo. "
else
echo Maurício >> arquivo_mauricio
zenity --info --text="Foi escrito Maurício no arquivo. "
fi

}

funcao_remover () {
rm arquivo_temp
zenity --info --text="Arquivo foi removido."
}

checklist=$(zenity --list --text="Menus de Scripts" --column "Ações" \
"Trocar 6 por meia dúzia" \
"Escrever Maurício" \
"Remove ARQUIVO")

case "$checklist" in
"Trocar 6 por meia dúzia" ) funcao_trocar ;;
"Escrever Maurício" ) funcao_escrever ;;
"Remove ARQUIVO" ) funcao_remover ;;
"*" ) exit ;;
esac


Executando tudo que escolher da checklist. Pra cada script crie um arquivo separado com o mesmo conteúdo das funções acima. Dê permissão de execução.

checklist=$(zenity --list --text="Menus de Scripts" --checklist --column "E/D" --column "Ações" \
FALSE "script_meiaduzia" \
FALSE "script_mauricio" \
FALSE "script_remover" --separator=":")

./$(echo "$checklist" | cut -d : -f1)
./$(echo "$checklist" | cut -d : -f2)
./$(echo "$checklist" | cut -d : -f3)



6. Re: Confecção de CheckList

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 25/04/2017 - 22:42h

zenull escreveu:
Você pode tirar essa mensagem redirecionando a saída de erro:
zenity --info --text="sem mensagem" 2>> /dev/null 

eu tava lendo essa parada agorinha em um fórum gringo, parece q é só uma mensagem tosca sem importância

zenull escreveu:
Sobre o script, há muitas formas de se fazer a mesma coisa.
Abaixo exemplos pro que você quer.
Valeu ... vou dar uma olhada ( e testada ) nos teus scripts pra dar uma assimilada legal nessa parada ... !!!

Caso não apareçam mais dúvidas depois marco o tópico como resolvido ...

Abçs
_______________________________________________________________
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"


7. Re: Confecção de CheckList

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 26/04/2017 - 11:00h

Dúvida ... o menu está sendo executado por um link simbólico na área de trabalho, dentre as ações do menus, algumas terão que ser executadas como ROOT e outras não ... qual a solução para essa questão ??? ou seja ... na primeira ação q deva ser feita como ROOT o Zenity pedir senha sudo.
_______________________________________________________________
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"


8. Re: Confecção de CheckList

Perfil removido
removido

(usa Nenhuma)

Enviado em 26/04/2017 - 14:43h


/dev/null é o buraco negro. kkkkk


É utilizado para descartar o fluxo de saída de um processo cujo resultado não interessa por algum motivo.


9. Re: Confecção de CheckList

Perfil removido
removido

(usa Nenhuma)

Enviado em 26/04/2017 - 14:46h

Mauriciodez escreveu:

Dúvida ... o menu está sendo executado por um link simbólico na área de trabalho, dentre as ações do menus, algumas terão que ser executadas como ROOT e outras não ... qual a solução para essa questão ??? ou seja ... na primeira ação q deva ser feita como ROOT o Zenity pedir senha sudo.
_______________________________________________________________
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"


Ex: Ações executadas como ROOT

gksu comando

gksu gparted






10. Re: Confecção de CheckList

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 26/04/2017 - 15:25h

meianoite escreveu:
gksu comando
gksu gparted


sem chance camarada
mauricio@debian:~$ ls /home
mauricio testeROOT1.txt testeROOT2.txt
mauricio@debian:~$ cat /home/testeROOT1.txt
mauricio@debian:~$ cat /home/testeROOT2.txt

mauricio@debian:~$ ./Público/zenity_menu.sh 
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.
./Público/zenity_menu.sh: line 10: /home/testeROOT1.txt: Permissão negada
./Público/zenity_menu.sh: line 11: /home/testeROOT2.txt: Permissão negada

#!/bin/bash
data=`date +%H:%M:%S`
selection=$(zenity --list --checklist \
--title='Configurações' --column=E/D --column=Ações \
FALSE "Ação 1" \
FALSE "Ação 2" \
FALSE "Ação 3")

[[ $selection = "Ação 1"* ]] && echo "Você escolheu a ação A as $data" >> ~/Público/teste.txt
[[ $selection = *"Ação 2"* ]] && gksu echo "Você escolheu a ação B as $data" >> /home/testeROOT1.txt
[[ $selection = *"Ação 3" ]] && gksu echo "Você escolheu a ação C as $data" >> /home/testeROOT2.txt


se eu mudar o código a situação se inverte, altera só os q o dono é o ROOT
#!/bin/bash
if [ "`id -u`" != "0" ] ; then
gksu $0
exit
fi
data=`date +%H:%M:%S`
selection=$(zenity --list --checklist \
--title='Configurações' --column=E/D --column=Ações \
FALSE "Ação 1" \
FALSE "Ação 2" \
FALSE "Ação 3")

[[ $selection = "Ação 1"* ]] && echo "Você escolheu a ação B as $data" >> ~/Público/teste.txt
[[ $selection = *"Ação 2"* ]] && echo "Você escolheu a ação B as $data" >> /home/testeROOT1.txt
[[ $selection = *"Ação 3" ]] && echo "Você escolheu a ação C as $data" >> /home/testeROOT2.txt


mauricio@debian:~$ cat /home/testeROOT1.txt
Você escolheu a ação B as 15:23:54
mauricio@debian:~$ cat /home/testeROOT2.txt
Você escolheu a ação C as 15:23:54
mauricio@debian:~$ cat ~/Público/teste.txt
mauricio@debian:~$

_______________________________________________________________
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"


11. Re: Confecção de CheckList

José da Silva
zenull

(usa Outra)

Enviado em 26/04/2017 - 22:37h

Uma possível solução:
SUDO=$(zenity --password --title="Digite a senha de administrador"  2>> /dev/null)
echo -e "\n$SUDO\n" | sudo -S ./script



12. Re: Confecção de CheckList

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 26/04/2017 - 22:43h

zenull escreveu:

Uma possível solução:
SUDO=$(zenity --password --title="Digite a senha de administrador"  2>> /dev/null)
echo -e "\n$SUDO\n" | sudo -S ./script


vou tentar depois .. valew !!!
_______________________________________________________________
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"



01 02 03



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts