platenciaPrinse.sh 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #!/usr/bin/env bash
  2. #-----------HEADER-------------------------------------------------------------|
  3. # AUTOR : FERNANDO PASCHOETO
  4. # HOMEPAGE : https://gitlab.com/fernandopaschoeto
  5. # : https://www.notabug.org/fernandopaschoeto
  6. # DATA-DE-CRIAÇÃO : 2020-08-25
  7. # PROGRAMA : PLATENCIA
  8. # VERSÃO : 1.4
  9. # LICENÇA : GPL3
  10. # PEQUENA-DESCRIÇÃO : Programa coleta latencia de conexão com hosts e se há perdas
  11. # de pacote e envia os dados para o Telegram.
  12. # CHANGELOG :
  13. #
  14. # Versão-1.0 | FERNANDO PASCHOETO - AGOSTO DE 2020
  15. # Programa realiza ping de uma lista de endereços e retorna em
  16. # um arquivo de log o nome do host e resultado do comando ping.
  17. #
  18. # Versão-1.1 | FERNANDO PASCHOETO - Agosto de 2020
  19. # Criado a função lapidar que remove do texto as informações
  20. # desnecessárias.
  21. #
  22. # Versão-1.2 | FERNANDO PASCHOETO - Agosto de 2020
  23. # Adicionado verificação de perdas de pacote
  24. # Melhoria ao lapdar arquivos diminuindo as linhas de código.
  25. #
  26. # Versão-1.3 | FERNANDO PASCHOETO - Setembro de 2020
  27. # Reduzido número de pings e apontando para 2 arquivos temporários.
  28. # Alterada a forma como o programa coleta os dados.
  29. #
  30. # Versão-1.4 | FERNANDO PASCHOETO - Setembro de 2020
  31. # Criado função para integração com o Telegram.
  32. # Realizada alteração na saída do código para ficar legível
  33. # em dispositivos móveis.
  34. #
  35. #------------------------------------------------------------------------------|
  36. #--------------------------------- VARIÁVEIS ---------------------------------->
  37. LOG=platencia.tmp
  38. perdaspct=perdaspct.tmp
  39. recorte=recorte.tmp
  40. mensagem="0"
  41. # Hosts e IP precisam estar com a mesma ordem para não alterarem a saída.
  42. hosts=(
  43. "Google"
  44. "Facebook"
  45. "FreeDNS"
  46. "Youtube"
  47. )
  48. ip=(
  49. "8.8.8.8"
  50. "facebook.com"
  51. "1.1.1.1"
  52. "youtube.com"
  53. )
  54. #------------------------------- FIM-VARIÁVEIS --------------------------------<
  55. # Realiza o processo de ping nos hosts.
  56. function pingando(){
  57. i=0
  58. h=0
  59. pacotes=0
  60. for i in "${ip[@]}"; do
  61. echo -e "\t\t\n\n\t________________________________\n\n<===> ${hosts[$h]} <===>\n\n"
  62. ping -c 5 "$i" | tee "$recorte" "$perdaspct"
  63. pacotes=$(grep packets "$perdaspct" | cut -d ' ' -f4)
  64. # Testa se há perdas de pacote para os hosts
  65. if [[ "$pacotes" -eq "5" ]]; then
  66. echo "Sem perdas para ${hosts[h]}!! <===>"
  67. elif [[ "$pacotes" -eq "0" ]]; then
  68. echo "Sem conexao com ${hosts[h]}!! <===> "
  69. else
  70. echo "${hosts[h]} com perdas de pacote!! <===>"
  71. fi
  72. let h++
  73. done
  74. }
  75. # Retira informação indesejada do arquivo.
  76. # Essa função ainda deve ser melhorada, ainda dependendo do direcionamento para o telegram
  77. function lapidar(){
  78. sed -i 's/rtt//g' "$LOG"
  79. sed -i 's/\/mdev//g' "$LOG"
  80. sed -ri 's/\/[0-9]{1,3}.[0-9]{1,3} ms$/ ms/' "$LOG"
  81. mensagem=$(grep -E "________________________|<===>|min/avg" "$LOG")
  82. }
  83. function telegram(){
  84. # Telegram Variáveis
  85. token="SEU TOKEN TELEGRAM"
  86. ID="ID DO GRUPO OU CHAT TELEGRAM"
  87. URL="https://api.telegram.org/bot$token/sendMessage"
  88. # Envia saída para Grupo do Telegram.
  89. curl -s -X POST $URL -d chat_id=$ID -d text="$mensagem "
  90. }
  91. #------------------------------- CHAMADA DE FUNÇÕES --------------------------------<
  92. pingando >${LOG}
  93. lapidar
  94. telegram