123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336 |
- #!/bin/bash
- #=============HEADER==============================================================|
- #AUTOR:
- # Jefferson Rocha <lrcjefferson@gmail.com>
- #
- #PROGRAMA:
- # Elog (Emmi Log)
- #
- #VERSÃO:
- # 0.4
- #
- #LICENÇA MIT
- #
- #SITE:
- # http://www.emmilinux.com.br
- #
- #DESCRIÇÃO:
- # Utilitário via CLI utilizando DIALOG com muitos recursos para facilitar
- # a vida do usuário!
- # Este programa foi feito especialmente para Distribuição Emmi Linux, que
- # tem como sua base o Debian.
- # Por isso para rodar em outra distribuição deve-se adaptar,
- # alguns recursos como comandos.
- #
- #RECURSOS:
- # -Atualizar Hora com Ntpdate (Servidor1 - ntp.br, Servidor2 - 2.br.pool.ntp.org )
- # -Configuração de Monitores com xrandr
- # -Configuração do teclado para ABNT2
- # -Editar Repositório com o editor nano
- #
- #NOTAS:
- # -Todos arquivos texto caso precise são adicionados em /tmp/elog.txt ,
- # e são excluidos logo após concluir a opção.
- # A uma função para isto que se chama (log4space)
- #
- #
- #
- #
- #CHANGELOG:
- #
- # (Versão 0.1) - Jefferson Rocha
- # -Lançamento do Software
- #
- # (Versão 0.2) - Jefferson Rocha
- # -Adicionado Configuração para Monitores
- #
- #
- # (Versão 0.3) - Jefferson Rocha
- # -Adicionado configuração Teclado (ABNT2)
- #
- #
- # (Versão 0.4) - Jefferson Rocha
- # -Adicionado Opção para editar Repositório (com editor nano)
- # -Trocado modo de chamada das funções "function por func()"
- # -Adicionado váriavel DIALOGRC para puxar configurações padrão do programa
- #
- #
- # (Versão 1.0) - Jefferson Rocha
- # -Adicionado check para ver se ntpdate está no sistema
- # -Adicionado opções para instalação dos checks ( dialog, ntpdate )
- # -Adicionado opção para mudar/alternar de shell (fish, bash)
- # -Adicionado opção de Ajuda no menu principal
- # -Adicionado tratamento de saída 255 (ESC)
- #
- #=================================================================================|
- #=======Váriaveis do Elog==#
- name="elog"
- version="1.0"
- back_title="$name versão $version"
- check_root=$(echo $UID)
- check_dialog=$(which dialog 2>&-)
- check_ntp=$(which ntpdate 2>&-)
- export DIALOGRC=".dialogrc-elog" # Mudar cor
- #===========FIM Váriaveis==#
- #=======Funções==#
- MSG_ERROR() { # Mensagem padronizada de erro.
- dialog --stdout \
- --title "Erro!" \
- --backtitle "$back_title" \
- --msgbox "\n Houve um erro :( \n" 8 25
- }
- KEY_OUTPUT() { # Tratamento de saídas
- case $? in
- 1) break ;;
- 2)
- dialog --stdout \
- --title "Ajuda" \
- --backtitle "$back_title" \
- --ok-label "Voltar" \
- --msgbox "
- Elog versão $version
- Este mini manual tem como te ajudar a se encontrar aqui na elog.
- Este software foi desenvolvido para você ter acesso fácil as principais configurações do sistema Emmi.
- - Como posso navegar entre os menus?
- Você pode usar o DIRECIONAL (flexinhas) do seu teclado ou simplesmente usar TAB.
- - Como faço para selecionar algo? Por exemplo, alguma opção do menu principal?
- Você pode usar o BACKSPACE ou o ENTER do seu teclado.
- - Como posso sair do programa sem precisar ir no botão (Sair)?
- Você pode apertar CTRL+C para finalizar a elog.
- Se você encontrar um bug ou quer fazer alguma solicitação, envie um e-mail para <jeffersonrocha@emmilinux.com.br>
- " 0 0 ;;
- 255)
- dialog --stdout \
- --yes-label "Sim" --no-label "Não" \
- --yesno "Deseja Sair?" 0 0
- [ $? = "0" ] && exit 0
- esac
- }
- log4space() {
- rm /tmp/elog.txt
- }
- #=======FIM Funções==#
- #=======Configuração Inicial==#
- # Usuário é root?
- if [[ $check_root -ne 0 ]]; then
- dialog --stdout \
- --title "Erro!" \
- --backtitle "$back_title" \
- --ok-label "Ok! Já volto." \
- --msgbox "\nFavor, logar-se como root." 8 27
- clear
- exit 1
- fi
- # ntp está no sistema?
- if [[ ! -e $check_ntp ]]; then
- dialog --stdout \
- --title "Erro!" \
- --backtitle "$back_title" \
- --ok-label "Sim, Instale." \
- --cancel-label "Não." \
- --yesno "\nNecessitas do 'ntpdate' para continuar, Deseja instalar agora?" 8 27
- if [ $? = "0" ]; then
- dialog --stdout \
- --title "Aguarde!!!" \
- --infobox "Instalando..." 0 0
- apt-get install ntpdate > /dev/null 2>/tmp/elog.txt
- [ $? = "0" ] && \ # Verificando se instalação nao teve erros.
- dialog --sleep 3 --infobox "Concluído" 0 0 \
- || \
- dialog --sleep 3 --title "OPS!" --infobox "Houve algum erro..." 0 0
- dialog --title "Verifique o Erro" \
- --editbox "/tmp/elog.txt" 0 0
- log4space # Chamada Funçao (REMOVER LOG)
- else
- exit 1
- fi
- fi
- # Dialog está instalado no sistema?
- if [[ ! -e $check_dialog ]]; then
- echo -e "\033[31;1mFavor Instalar o Dialog para prosseguir!\033[m"
- read -p "Deseja instalar agora?" option_user
- option_user_upper=${option_user,,}
- [ "$option_user" = "s" ] && apt-get install dialog
- fi
- #===========FIM Configurações==#
- # THE FUN START HERE ;)
- # Menu Principal
- while : ; do
- menu=$(
- dialog --stdout \
- --title "Menu Principal" \
- --backtitle "$back_title" \
- --ok-button "Executar" \
- --cancel-button "Sair" \
- --help-button \
- --help-label "Ajuda" \
- --menu "O que você deseja fazer?" \
- 0 0 0 \
- Hora "Ajustar o horário" \
- Monitores "Ajuste meus Monitores" \
- Teclado "Deixe meu teclado ABNT2" \
- Repositório "Ajuste meu Repositório" \
- Shell "Troque o meu Shell por outro" )
- KEY_OUTPUT # Chamada função de tratamento de saída
- case $menu in
- # HORA
- Hora)
- dialog --stdout \
- --title "Configuração da Hora" \
- --backtitle "$back_title" \
- --infobox "Um momento..." 0 0
- ntpdate ntp.br || ntpdate 2.br.pool.ntp.org # Atualizar data
- if [[ $? -eq 0 ]]; then
- dialog --stdout \
- --title "Concluído" \
- --backtitle "$back_title" \
- --msgbox "Concluído!" 0 0 ;sleep 3s
- else
- MSG_ERROR
- fi ;;
- # MONITORES
- Monitores)
- dialog --stdout \
- --title "Configuração dos monitores" \
- --backtitle "$back_title" \
- --infobox "Aguarde..." 0 0
- xrandr > /tmp/elog.txt # Criando arquivo em tmp do Elog
- dialog --stdout \
- --exit-label "Continuar" \
- --title "Configuração dos monitores" \
- --backtitle "$back_title" \
- --textbox /tmp/elog.txt 0 0
- case $? in
- 0)
- MONITOR_MAIN=$(
- dialog --stdout \
- --title "Configuração dos monitores" \
- --backtitle "$back_title" \
- --inputbox "Informe o monitor principal\nExemplo: VGA-1" 0 0 )
- FILTER_M_MAIN=$(echo $MONITOR_MAIN | tr [:lower:] [:upper:]) # tudo em MAIUSCULO
- POSITION=$( # Posição do monitor!
- dialog --stdout \
- --title "IMPORTANTE" \
- --inputbox "Qual a posição do monitor principal?\nRight=Direita Left=Esquerda :" 0 0 )
- FILTER_POSITION=$(echo $POSITION | tr [:upper:] [:lower:] )
- MONITOR_SECONDARY=$(
- dialog --stdout \
- --title "Configuração dos monitores" \
- --backtitle "$back_title" \
- --inputbox "Informe o monitor secundário:\nExemplo HDMI-1" \ 0 0 )
- FILTER_M_SECONDARY=$(echo $MONITOR_SECONDARY | tr [:lower:] [:upper:]) # tudo em MAISCULO
- # Executando comando xrandr
- xrandr --output $FILTER_M_MAIN --$FILTER_POSITION-of $FILTER_M_SECONDARY
- if [[ $? -eq 0 ]]; then
- dialog --stdout \
- --title "Finalizado" \
- --msgbox "Finalizado com Sucesso! :)" 0 0
- rm /tmp/elog.txt
- else
- MSG_ERROR
- fi
- esac ;;
- # Teclado
- Teclado)
- dialog --stdout \
- --title "Configuração do teclado" \
- --backtitle "$back_title" \
- --infobox "Um momento!" 0 0
- setxkbmap -model pc105 -layout br -variant abnt2
- if [[ $? -eq 0 ]]; then
- dialog --stdout \
- --title "Configuração teclado" \
- --msgbox "Concluído!" 0 0
- echo "setxkbmap -model pc105 -layout br -variant abnt2" >> /etc/profile
- else
- MSG_ERROR
- fi ;;
- # Repositório
- Repositório)
- nano /etc/apt/sources.list ;;
- Shell)
- while : ;do
- type_shell=$(
- dialog --stdout \
- --menu "Escolha qual shell será o Padrão" \
- 0 0 0 \
- Fish "Shell Fácil de utilizar e bem completo" \
- Bash "Shell padrão de todas as distribuições" )
- KEY_OUTPUT # Chamada funçao
- if [ "$type_shell" = "Fish" ]; then
- shell_fish=$(which fish)
- if [ ! -e "$shell_fish" ]; then
- dialog --sleep 4 --infobox "Você não possue o Fish, instale e retorne." 5 42
- break
- fi
- name=$(dialog --stdout --inputbox "Nome do seu Usuário:" 0 0)
- grep "$name" /etc/passwd >/dev/null # Usuário Existe?
- if [ $? = "1" ] || [ -z "$name" ]; then
- dialog --title "Ops." \
- --ok-label "Ok" \
- --msgbox "Este usuário Não existe!" 5 30
- else
- chsh --shell "$shell_fish" "$name"
- chsh --shell "$shell_fish" "root"
- dialog --sleep 4 \
- --infobox "Concluído, reinicie sua Interface gráfica." 3 45
- break
- fi
- else
- shell_bash=$(which bash)
- name=$(dialog --stdout --inputbox "Nome do seu Usuário:" 0 0)
- grep "$name" /etc/passwd >/dev/null # Usuário Existe?
- if [ $? = "1" ] || [ -z "$name" ]; then
- dialog --title "Ops." \
- --ok-label "Ok" \
- --msgbox "Este usuário Não existe!" 5 30
- else
- chsh --shell "$shell_bash" "$name" && \
- chsh --shell "$shell_bash" "root"
- dialog --sleep 4 \
- --infobox "Concluído, reinicie sua Interface gráfica." 3 45
- break
- fi
- fi
- done ;;
- esac # Fecha case Principal
- done # Fecha loop do menu
|