pressao 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. #!/bin/sh
  2. # Dont ultrapass '|'
  3. #
  4. #--------HEADER---------------------------------------------------------------|
  5. #AUTOR
  6. # Jefferson Rocha <lrcjefferson@gmail.com>
  7. #
  8. #PROGRAMA
  9. # Pressao - Controle de Pressão Arterial
  10. #
  11. #DESCRIÇÃO
  12. # Dados de inserção para controle de pressão arterial.
  13. #
  14. #LICENÇA
  15. # MIT - https://notabug.org/jeffersonrocha/Pressao/raw/master/LICENSE
  16. #
  17. #CHANGELOG
  18. # **Versão 1.2 - Jefferson Rocha
  19. # -Inserido Opção inline de procura por data.
  20. # -Inserido Opção de ajuda.
  21. #
  22. #
  23. # **Versão 1.3 - Jefferson Rocha
  24. # -Inserido a opção de 'bloqueio' e 'desbloqueio' do banco de dados com o
  25. # comando 'chattr'.
  26. #
  27. # -Tirado a Var '$HOME' das váriaveis '$dir e $backup' e colocado caminho
  28. # absoluto, retirando assim possíveis erros futuros.
  29. #
  30. # -Substituido algumas váriaveis:
  31. # 'dir' por: diretorio_principal
  32. # 'dir_bp' por: banco_de_dados
  33. # 'backup' por: diretorio_backup
  34. #-----------------------------------------------------------------------------|
  35. #--------------CONFIGURACAO--------------#
  36. # INSIRA OS DADOS e Configurações aqui!
  37. # Nome COMPLETO
  38. Nome=""
  39. # Formato exemplo: 15/12/1985
  40. Data_de_nascimento=""
  41. # Exemplo "Hidrocloritiazida - 50mg, Besilapin - 5mg"
  42. Remedios=""
  43. # Diretorio do bd
  44. # Mude se necessário!
  45. diretorio_principal="/home/slackjeff/press"
  46. # Banco de dados
  47. # mude se necessário.
  48. banco_de_dados="$diretorio_principal/bd.txt"
  49. # Caminho para Backup
  50. # Mude se necessário.
  51. diretorio_backup="/home/slackjeff/bd-pressao-bkp.txt"
  52. #=========== NÃO MEXER DAQUI PARA BAIXO! ===========#
  53. #--------------VARS--------------#
  54. versao="1.2"
  55. #--------------------------------#
  56. #--------------FUNCOES--------------#
  57. _adicionar(){
  58. # Inserindo dados no banco de dados.
  59. if [ -e "$banco_de_dados" ] && [ -w "$banco_de_dados" ]; then
  60. if echo " $Data $Hora $Pressao" >> "$banco_de_dados"; then
  61. echo "Dados inseridos com sucesso!"
  62. else
  63. echo "Houve um erro."
  64. fi
  65. else
  66. echo "Arquivo não existe ou Sem permissão de Escrita..."
  67. fi
  68. }
  69. _template(){
  70. cat >> "$banco_de_dados" <<EOF
  71. PACIENTE
  72. ==============
  73. Nome: $Nome
  74. Data de Nascimento: $Data_de_nascimento
  75. Remedios em Uso: $Remedios
  76. -----------------------------------------------------------------------
  77. PRESSÃO ARTERIAL MEDIÇÃO
  78. ============================
  79. **NOTA
  80. Fazer medição TODOS os dias as X horas da manhã.
  81. Medicando com os remédios:
  82. -----------------------------------------------------------------------
  83. DATA HORA PRESSÃO
  84. ======== ========= ===========
  85. EOF
  86. }
  87. _ajuda(){
  88. cat << EOF
  89. Pressao - Controle de Pressão Arterial $versao
  90. Copyright (C) 2018 Jefferson Rocha <lrcjefferson@gmail.com>
  91. License: MIT - https://notabug.org/jeffersonrocha/Pressao/raw/master/LICENSE
  92. Banco de dados utilizado é em Texto puro, para os mais familiarizados Plain-Text.
  93. Este formato é mais limpo, leve e sem frufrus adicionais.
  94. BUGS: lrcjefferson@gmail.com
  95. Sintaxe: pressao [OPÇÃO]
  96. Opções Disponíveis:
  97. -i, inserir
  98. Questionatário será perguntado 'Data da medição', 'Hora da medição' e 'Pressão Arterial'
  99. Exemplo de um padrão exato:
  100. Qual à Data: 18/05/2015
  101. Qual à Hora: 15:20
  102. Qual à Pressão: 12x7
  103. *É importante não deixar nenhum campo nulo, se não o programa fecha.
  104. No banco de dados será armazenado no formato em linha e caso o usuário peça para 'visualizar'
  105. será visualizado neste formato:
  106. DATA HORA PRESSÃO
  107. ======== ========= ===========
  108. 18/05/2015 15:20 12x7
  109. -v, visualizar
  110. Visualize todo banco de dados, contendo todas as informações como 'Data' 'Hora' e 'Pressão'.
  111. -p, procurar
  112. Procure pela 'Data' a informação necessária, exemplo:
  113. pressao procurar 14/10
  114. pressao procurar 14
  115. pressao procurar 14/10/2018
  116. Será exibido todas a(s) data(s) que coinsidirem.
  117. -a, ajuda
  118. Mostra à ajuda completa do programa e sai.
  119. EOF
  120. }
  121. #----------------------------------#
  122. #--------------TESTES--------------#
  123. # Se diretorio não existir, crie!
  124. [ ! -e "$diretorio_principal" ] && { mkdir "$diretorio_principal" ;}
  125. # Se banco de dados não existir crie!
  126. [ ! -e "$banco_de_dados" ] && { _template ;}
  127. # chattr existe?
  128. [ $(type -P chattr) ] && comando_chattr="on"
  129. #---------------------------------#
  130. #--------------Inicio--------------#
  131. case $1 in
  132. -i|inserir)
  133. for dados in "Data" "Hora" "Pressao"; do
  134. read -p "Qual à ${dados}: " "${dados}"
  135. # Conferindo se dado está nulo, se está tchau.
  136. for null in "$Data" "$Hora" "$Pressao"; do
  137. if [ -z "$null" ]; then
  138. echo "Dado nulo, saindo."
  139. exit 1
  140. else
  141. break
  142. fi
  143. done
  144. done
  145. _adicionar # Chamada função para adicionar dados.
  146. ;;
  147. -v|visualizar) cat "$banco_de_dados" | less ;;
  148. -p|procurar)
  149. shift
  150. while [ -n "$1" ]; do
  151. if grep -E "^..$1" "$banco_de_dados" >> /tmp/arq; then
  152. if [ -e "/tmp/arq" ]; then
  153. echo -e "\033[31;1mArquivos Encontrados:\033[m"
  154. cat "/tmp/arq"
  155. rm "/tmp/arq"
  156. fi
  157. else
  158. echo "Nenhum dado com está data foi encontrado."
  159. rm "/tmp/arq"
  160. fi
  161. shift
  162. done
  163. ;;
  164. backup) cat "$banco_de_dados" >> "$diretorio_backup" ;;
  165. bloquear)
  166. # Chattr existe? ok, vamos ver se é root.
  167. if [ "$comando_chattr" = "on" ]; then
  168. if [ $(id -u) -eq "0" ]; then
  169. if chattr +i "$banco_de_dados"; then
  170. echo -e "$banco_de_dados foi bloqueado com sucesso...\nPara desbloqueio use o parâmetro 'desbloquear' não se esqueça."
  171. else
  172. echo "Houve algum problema... não foi possível bloquear $banco_de_dados ..."
  173. fi
  174. else
  175. echo "Necessita de Root para usar este parâmetro."
  176. exit 1
  177. fi
  178. else
  179. echo "Impossível bloquear, instale o 'chattr' para prosseguir."
  180. fi
  181. ;;
  182. desbloquear)
  183. # Chattr existe? ok, vamos ver se é root.
  184. if [ "$comando_chattr" = "on" ]; then
  185. if [ $(id -u) -eq "0" ]; then
  186. if chattr -i "$banco_de_dados"; then
  187. echo -e "$banco_de_dados foi desbloqueado com sucesso..."
  188. else
  189. echo "Houve algum problema... não foi possível desbloquear $banco_de_dados ..."
  190. fi
  191. else
  192. echo "Necessita de Root para usar este parâmetro."
  193. exit 1
  194. fi
  195. else
  196. echo "Impossível desbloquear, instale o 'chattr' para prosseguir."
  197. fi
  198. ;;
  199. -v|versao) echo "Pressao versão $versao" ;;
  200. *|-a|ajuda) _ajuda ;; # Chamda função _ajuda.
  201. esac
  202. #------------------------------------------#