slac 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. #!/usr/bin/env bash
  2. #-------HEADER---------------------------------------------------------------------|
  3. #AUTOR
  4. # Jefferson Rocha <lrcjefferson@gmail.com>
  5. #
  6. #PROGRAMA
  7. # Slac
  8. #
  9. #DESCRICAO
  10. # Programa de manutenção para Slackware 14x
  11. #
  12. #DEPENDÊNCIAS
  13. # ntpd >= 4.2.8
  14. # bash >= 4.4.12
  15. #
  16. #CHANGELOG
  17. # 23/02/2018 (Jefferson Rocha)
  18. # -Adicionado Chaves, (internet_key e keyboard_key)
  19. # para ativação dos serviços desejados
  20. #
  21. # -Agora podemos atualizar a hora!
  22. #
  23. # -Opções podem ser chamadas via linha de comando.
  24. # (-i ou --internet, -k ou --keyboard, -h ou --hour, -H ou --help)
  25. #
  26. #----------------------------------------------------------------------------------|
  27. ##########################################
  28. # #
  29. # Controle de chave. #
  30. # Caso queira habilitar/desabilitar #
  31. # algum recurso do programa #
  32. # #
  33. # 0 Para desligado, 1 para ligado #
  34. # #
  35. ##########################################
  36. internet_key="0" # Internet
  37. keyboard_key="1" # Teclado
  38. hour_key="0" # Hora
  39. ####################################################
  40. # #
  41. # Mude conforme sua necessidade... #
  42. # Para verificar qual sua interface use o comando #
  43. # "ifconfig -s" #
  44. # Por exemplo, para conexões com placa wireless a #
  45. # interface pode ser wlan0, wlan1 wlan2 etc... #
  46. # Para conexções Cabeadas eth0, eth1, enps0 etc... #
  47. # #
  48. # Por padrão o programa slac vem interface eth0 #
  49. # #
  50. ####################################################
  51. interface="eth0"
  52. ### FIM DA CONFIGURAÇÃO, não edite daqui para baixo.
  53. #-----VÁRIAVEIS------------------->
  54. VERSION="1.0"
  55. # Servidores para o uso do ntpdate
  56. server1="ntp.br"
  57. server2="2.br.pool.ntp.org"
  58. # Cores para vida
  59. end="\033[m"
  60. red="\033[31;1m"
  61. green="\033[38;1m"
  62. #--------------------------------->
  63. #--------FUNÇÕES------------------>
  64. have_internet(){ wget -q --spider www.google.com; }
  65. help_now(){
  66. cat << EOF | less
  67. NOME
  68. Slac - Sistema de configuração do Slackware
  69. VERSAO
  70. $VERSION
  71. SINOPSE
  72. slac [PARÂMETRO] [OPERAÇÃO]
  73. OPÇÕES
  74. -i, --internet
  75. Ative a configuração da internet...
  76. A interface padrão é eth0, caso deseje mudar use
  77. -i [INTERFACE]
  78. -k, --keyboard
  79. Troque a configuração do teclado para ABNT2
  80. -h, --hour
  81. Ajuste a hora do sistema com ntpdate...
  82. -H, --help
  83. Chama este manual
  84. AUTOR
  85. Escrito por Jefferson Rocha <lrcjefferson@gmail.com>
  86. LICENÇA
  87. MIT
  88. PRESSIONE 'Q' para SAIR
  89. EOF
  90. }
  91. #--------------------------------->
  92. #-----TESTES INICIAIS------------->
  93. [[ "$UID" -ne "0" ]] && exit 1
  94. # Ntpdate não existe? chave desliga.
  95. [[ $(which ntpdate 2>/dev/null) ]] && hour_key="0"
  96. #--------------------------------->
  97. #################################
  98. # Opções via linha de comando #
  99. # Parâmetro foi utilizado? #
  100. # A chave é ligada! #
  101. #################################
  102. while [[ -n "$1" ]]; do
  103. case "$1" in
  104. -i|--internet)
  105. internet_key="1"
  106. shift
  107. interface="$1"
  108. [[ -z "$1" ]] && interface="eth0"
  109. ;;
  110. -k|--keyboard) keyboard_key="1" && shift ;;
  111. -h|--hour) hour_key="1" && shift ;;
  112. -H|--help) help_now && shift;; # Chamada Função
  113. esac
  114. done
  115. # Aqui toda brincadeira começa!
  116. # boa diversão!
  117. # Internet
  118. if [[ "$internet_key" = "1" ]]; then # Chave está habilitada?
  119. if ! have_internet; then
  120. if ! which dhclient >/dev/null 2>&1; then
  121. dhcpcd -t 5 "$interface"
  122. else
  123. dhclient "$interface"
  124. fi
  125. fi
  126. fi
  127. # Teclado
  128. if [[ "$keyboard_key" = "1" ]]; then # Chave está habilitada?
  129. if [[ "$TERM" != "linux" ]]; then
  130. setxkbmap -model abnt2 -layout br
  131. else
  132. loadkeys br-abnt2
  133. fi
  134. fi
  135. # Hora
  136. if [[ "$hour_key" = "1" ]]; then
  137. if ! have_internet; then
  138. if ! ntpdate "$server1"; then
  139. ntpdate "$server2"
  140. fi
  141. fi
  142. fi