query_gamedig.sh 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #!/bin/bash
  2. # query_gamedig.sh function
  3. # Author: Daniel Gibbs
  4. # Website: https://linuxgsm.com
  5. # Description: Querys a gameserver using node-gamedig.
  6. # https://github.com/sonicsnes/node-gamedig
  7. # Check if gamedig and jq are installed.
  8. if [ "$(command -v gamedig 2>/dev/null)" ]&&[ "$(command -v jq 2>/dev/null)" ]; then
  9. # will bypass query if server offline.
  10. check_status.sh
  11. if [ "${status}" != "0" ]; then
  12. # checks if query is working null = pass.
  13. gamedigcmd=$(echo -e "gamedig --type \"${querytype}\" --host \"${ip}\" --query_port \"${queryport}\"|jq")
  14. gamedigraw=$(gamedig --type "${querytype}" --host "${ip}" --query_port "${queryport}")
  15. querystatus=$(echo -e "${gamedigraw}" | jq '.error|length')
  16. if [ "${querystatus}" != "null" ]; then
  17. gamedigcmd=$(echo -e "gamedig --type \"${querytype}\" --host \"${ip}\" --port \"${queryport}\"|jq")
  18. gamedigraw=$(gamedig --type "${querytype}" --host "${ip}" --port "${queryport}")
  19. querystatus=$(echo -e "${gamedigraw}" | jq '.error|length')
  20. fi
  21. # server name.
  22. gdname=$(echo -e "${gamedigraw}" | jq -re '.name')
  23. if [ "${gdname}" == "null" ]; then
  24. unset gdname
  25. fi
  26. # numplayers.
  27. gdplayers=$(echo -e "${gamedigraw}" | jq -re '.players')
  28. if [ "${gdplayers}" == "null" ]; then
  29. unset gdplayers
  30. elif [ "${gdplayers}" == "[]" ]; then
  31. gdplayers=0
  32. fi
  33. # maxplayers.
  34. gdmaxplayers=$(echo -e "${gamedigraw}" | jq -re '.maxplayers')
  35. if [ "${gdmaxplayers}" == "null" ]; then
  36. unset maxplayers
  37. elif [ "${gdmaxplayers}" == "[]" ]; then
  38. gdmaxplayers=0
  39. fi
  40. # current map.
  41. gdmap=$(echo -e "${gamedigraw}" | jq -re '.map')
  42. if [ "${gdmap}" == "null" ]; then
  43. unset gdmap
  44. fi
  45. # current gamemode.
  46. gdgamemode=$(echo -e "${gamedigraw}" | jq -re '.raw.rules.GameMode_s')
  47. if [ "${gdgamemode}" == "null" ]; then
  48. unset gdgamemode
  49. fi
  50. # numbots.
  51. gdbots=$(echo -e "${gamedigraw}" | jq -re '.raw.numbots')
  52. if [ "${gdbots}" == "null" ]||[ "${gdbots}" == "0" ]; then
  53. unset gdbots
  54. fi
  55. fi
  56. fi