query_gamedig.sh 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
  8. # Check if gamedig and jq are installed.
  9. if [ "$(command -v gamedig 2>/dev/null)" ]&&[ "$(command -v jq 2>/dev/null)" ]; then
  10. # will bypass query if server offline.
  11. check_status.sh
  12. if [ "${status}" != "0" ]; then
  13. # checks if query is working null = pass.
  14. gamedigcmd=$(echo -e "gamedig --type \"${querytype}\" --host \"${queryip}\" --query_port \"${queryport}\"|jq")
  15. gamedigraw=$(gamedig --type "${querytype}" --host "${queryip}" --query_port "${queryport}")
  16. querystatus=$(echo "${gamedigraw}" | jq '.error|length')
  17. if [ "${querystatus}" != "null" ]; then
  18. gamedigcmd=$(echo -e "gamedig --type \"${querytype}\" --host \"${queryip}\" --port \"${queryport}\"|jq")
  19. gamedigraw=$(gamedig --type "${querytype}" --host "${queryip}" --port "${queryport}")
  20. querystatus=$(echo "${gamedigraw}" | jq '.error|length')
  21. fi
  22. # server name.
  23. gdname=$(echo "${gamedigraw}" | jq -re '.name')
  24. if [ "${gdname}" == "null" ]; then
  25. unset gdname
  26. fi
  27. # numplayers.
  28. if [ "${querytype}" == "minecraft" ]; then
  29. gdplayers=$(echo "${gamedigraw}" | jq -re '.players | length-1')
  30. else
  31. gdplayers=$(echo "${gamedigraw}" | jq -re '.players | length')
  32. fi
  33. if [ "${gdplayers}" == "null" ]; then
  34. unset gdplayers
  35. elif [ "${gdplayers}" == "[]" ]||[ "${gdplayers}" == "-1" ]; then
  36. gdplayers=0
  37. fi
  38. # maxplayers.
  39. gdmaxplayers=$(echo "${gamedigraw}" | jq -re '.maxplayers')
  40. if [ "${gdmaxplayers}" == "null" ]; then
  41. unset maxplayers
  42. elif [ "${gdmaxplayers}" == "[]" ]; then
  43. gdmaxplayers=0
  44. fi
  45. # current map.
  46. gdmap=$(echo "${gamedigraw}" | jq -re '.map')
  47. if [ "${gdmap}" == "null" ]; then
  48. unset gdmap
  49. fi
  50. # current gamemode.
  51. gdgamemode=$(echo "${gamedigraw}" | jq -re '.raw.rules.GameMode_s')
  52. if [ "${gdgamemode}" == "null" ]; then
  53. unset gdgamemode
  54. fi
  55. # numbots.
  56. gdbots=$(echo "${gamedigraw}" | jq -re '.bots | length')
  57. if [ "${gdbots}" == "null" ]||[ "${gdbots}" == "0" ]; then
  58. unset gdbots
  59. fi
  60. fi
  61. fi