pinglog.sh 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. #!/usr/bin/env bash
  2. LANG=C
  3. bins=('ping' 'parallel' 'date' 'sed' 'grep' 'cut')
  4. for bin in "${bins[@]}"; do
  5. if [[ -x "/usr/bin/${bin}" ]]; then
  6. continue
  7. elif [[ ! -x "/usr/bin/${bin}" ]]; then
  8. [[ ! -x "/usr/bin/pacman" ]] && echo "Please install /usr/bin/${bin}" && exit 1
  9. echo -e "Please install ${bin}\nIt must be the package: $(pacman -Fq /usr/bin/${bin} 2>/dev/null)"
  10. exit 1
  11. fi
  12. done
  13. GATEWAY="$(ip route | grep "default" | sed -r 's/default via ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+) .+/\1/g')"
  14. INTERNET="ping.manjaro.org"
  15. COUNT=5
  16. while true; do
  17. function pingpong ()
  18. {
  19. parallel --keep-order --jobs 2 --ungroup ping -c $COUNT ::: $GATEWAY $INTERNET | grep 'loss' | cut -d ' ' -f6
  20. }
  21. LOSS=( $(pingpong) )
  22. wait
  23. CURRENT="$(date '+%Y-%m-%d %H:%M:%S')"
  24. [[ "${LOSS[0]}" != "0%" ]] && echo "[${CURRENT}] ($GATEWAY $COUNT) $msg" 2>/dev/null | tee -a ping.log
  25. [[ "${LOSS[0]}" == "0%" ]] && echo "[${CURRENT}] ($GATEWAY $COUNT) No packets lost."
  26. [[ "${LOSS[1]}" != "0%" ]] && echo "[${CURRENT}] ($INTERNET $COUNT) $msg" 2>/dev/null | tee -a ping.log
  27. [[ "${LOSS[1]}" == "0%" ]] && echo "[${CURRENT}] ($INTERNET $COUNT) No packets lost."
  28. done