command_dev_query_raw.sh 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. #!/bin/bash
  2. # LinuxGSM command_dev_query_raw.sh module
  3. # Author: Daniel Gibbs
  4. # Contributors: http://linuxgsm.com/contrib
  5. # Website: https://linuxgsm.com
  6. # Description: Raw gamedig output of the server.
  7. commandname="DEV-QUERY-RAW"
  8. commandaction="Developer query raw"
  9. functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
  10. fn_firstcommand_set
  11. check.sh
  12. info_game.sh
  13. info_distro.sh
  14. info_messages.sh
  15. echo -e ""
  16. echo -e "${lightgreen}Query IP Addresses${default}"
  17. echo -e "=================================================================="
  18. echo -e ""
  19. for queryip in "${queryips[@]}"; do
  20. echo -e "${queryip}"
  21. done
  22. echo -e ""
  23. echo -e "${lightgreen}Game Server Ports${default}"
  24. echo -e "=================================================================="
  25. {
  26. echo -e "${lightblue}Port Name \tPort Number \tStatus \tTCP \tUDP${default}"
  27. if [ -v port ]; then
  28. echo -e "Game: \t${port} \t$(ss -tupl|grep ${port}|wc -l) \t$(ss -tupl|grep ${port}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${port}|grep udp|awk '{ print $2 }')"
  29. else
  30. echo -e "Game:"
  31. fi
  32. if [ "${shortname}" == "rw" ]; then
  33. if [ -v port2 ]; then
  34. echo -e "Game+1: \t${port2} \t$(ss -tupl|grep ${port}|wc -l) \t$(ss -tupl|grep ${port2}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${port2}|grep udp|awk '{ print $2 }')"
  35. else
  36. echo -e "Game+1:"
  37. fi
  38. if [ -v port3 ]; then
  39. echo -e "Game+2: \t${port3} \t$(ss -tupl|grep ${port}|wc -l) \t$(ss -tupl|grep ${port3}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${port3}|grep udp|awk '{ print $2 }')"
  40. else
  41. echo -e "Game+2:"
  42. fi
  43. if [ -v port4 ]; then
  44. echo -e "Game+3: \t${port4} \t$(ss -tupl|grep ${port}|wc -l) \t$(ss -tupl|grep ${port4}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${port4}|grep udp|awk '{ print $2 }')"
  45. else
  46. echo -e "Game+3:"
  47. fi
  48. fi
  49. if [ -v port401 ]; then
  50. echo -e "Game+400: \t${port401} \t$(ss -tupl|grep ${port401}|wc -l) \t$(ss -tupl|grep ${port401}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${port401}|grep udp|awk '{ print $2 }')"
  51. else
  52. echo -e "Game+400:"
  53. fi
  54. if [ -v portipv6 ]; then
  55. echo -e "Game ipv6: \t${portipv6} \t$(ss -tupl|grep ${portipv6}|wc -l) \t$(ss -tupl|grep ${portipv6}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${portipv6}|grep udp|awk '{ print $2 }')"
  56. else
  57. echo -e "Game ipv6:"
  58. fi
  59. if [ -v queryport ]; then
  60. echo -e "Query: \t${queryport} \t$(ss -tupl|grep ${queryport}|wc -l) \t$(ss -tupl|grep ${queryport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${queryport}|grep udp|awk '{ print $2 }')"
  61. else
  62. echo -e "Query:"
  63. fi
  64. if [ -v httpport ]; then
  65. echo -e "HTTP: \t${httpport} \t$(ss -tupl|grep ${httpport}|wc -l) \t$(ss -tupl|grep ${httpport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${httpport}|grep udp|awk '{ print $2 }')"
  66. else
  67. echo -e "HTTP:"
  68. fi
  69. if [ -v httpqueryport ]; then
  70. echo -e "HTTP Query: \t${httpqueryport} \t$(ss -tupl|grep ${httpqueryport}|wc -l) \t$(ss -tupl|grep ${httpqueryport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${httpqueryport}|grep udp|awk '{ print $2 }')"
  71. else
  72. echo -e "HTTP Query:"
  73. fi
  74. if [ -v webadminport ]; then
  75. echo -e "Web Admin: \t${webadminport} \t$(ss -tupl|grep ${webadminport}|wc -l) \t$(ss -tupl|grep ${webadminport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${webadminport}|grep udp|awk '{ print $2 }')"
  76. else
  77. echo -e "Web Admin:"
  78. fi
  79. if [ -v clientport ]; then
  80. echo -e "Client: \t${clientport} \t$(ss -tupl|grep ${clientport}|wc -l) \t$(ss -tupl|grep ${clientport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${clientport}|grep udp|awk '{ print $2 }')"
  81. else
  82. echo -e "Client:"
  83. fi
  84. if [ -v rconport ]; then
  85. echo -e "RCON: \t${rconport} \t$(ss -tupl|grep ${rconport}|wc -l) \t$(ss -tupl|grep ${rconport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${rconport}|grep udp|awk '{ print $2 }')"
  86. else
  87. echo -e "RCON:"
  88. fi
  89. if [ -v rawport ]; then
  90. echo -e "RAW UDP Socket: \t${rawport} \t$(ss -tupl|grep ${rawport}|wc -l) \t$(ss -tupl|grep ${rawport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${rawport}|grep udp|awk '{ print $2 }')"
  91. else
  92. echo -e "RAW UDP Socket:"
  93. fi
  94. if [ -v masterport ]; then
  95. echo -e "Game: Master: \t${masterport} \t$(ss -tupl|grep ${masterport}|wc -l) \t$(ss -tupl|grep ${masterport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${masterport}|grep udp|awk '{ print $2 }')"
  96. else
  97. echo -e "Game: Master:"
  98. fi
  99. if [ -v steamport ]; then
  100. echo -e "Steam: \t${steamport} \t$(ss -tupl|grep ${steamport}|wc -l) \t$(ss -tupl|grep ${steamport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${steamport}|grep udp|awk '{ print $2 }')"
  101. else
  102. echo -e "Steam:"
  103. fi
  104. if [ -v steamauthport ]; then
  105. echo -e "Steam: Auth: \t${steamauthport} \t$(ss -tupl|grep ${steamauthport}|wc -l) \t$(ss -tupl|grep ${steamauthport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${steamauthport}|grep udp|awk '{ print $2 }')"
  106. else
  107. echo -e "Steam: Auth:"
  108. fi
  109. if [ -v steammasterport ]; then
  110. echo -e "Steam: Master: \t${steammasterport} \t$(ss -tupl|grep ${steammasterport}|wc -l) \t$(ss -tupl|grep ${steammasterport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${steammasterport}|grep udp|awk '{ print $2 }')"
  111. else
  112. echo -e "Steam: Master:"
  113. fi
  114. if [ -v steamqueryport ]; then
  115. echo -e "Steam: Query: \t${steamqueryport} \t$(ss -tupl|grep ${steamqueryport}|wc -l) \t$(ss -tupl|grep ${steamqueryport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${steamqueryport}|grep udp|awk '{ print $2 }')"
  116. else
  117. echo -e "Steam: Query:"
  118. fi
  119. if [ -v beaconport ]; then
  120. echo -e "Beacon: \t${beaconport} \t$(ss -tupl|grep ${beaconport}|wc -l) \t$(ss -tupl|grep ${beaconport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${beaconport}|grep udp|awk '{ print $2 }')"
  121. else
  122. echo -e "Beacon:"
  123. fi
  124. if [ -v appport ]; then
  125. echo -e "App: \t${appport} \t$(ss -tupl|grep ${appport}|wc -l) \t$(ss -tupl|grep ${appport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${appport}|grep udp|awk '{ print $2 }')"
  126. else
  127. echo -e "App:"
  128. fi
  129. if [ -v telnetport ]; then
  130. echo -e "Telnet: \t${telnetport} \t$(ss -tupl|grep ${telnetport}|wc -l) \t$(ss -tupl|grep ${telnetport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${telnetport}|grep udp|awk '{ print $2 }')"
  131. else
  132. echo -e "Telnet:"
  133. fi
  134. if [ -v sourcetvport ]; then
  135. echo -e "SourceTV: \t${sourcetvport} \t$(ss -tupl|grep ${sourcetvport}|wc -l) \t$(ss -tupl|grep ${sourcetvport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${sourcetvport}|grep udp|awk '{ print $2 }')"
  136. else
  137. echo -e "SourceTV:"
  138. fi
  139. if [ -v fileport ]; then
  140. echo -e "File: \t${fileport} \t$(ss -tupl|grep ${fileport}|wc -l) \t$(ss -tupl|grep ${fileport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${fileport}|grep udp|awk '{ print $2 }')"
  141. else
  142. echo -e "File:"
  143. fi
  144. if [ -v udplinkport ]; then
  145. echo -e "UDP Link: \t${udplinkport} \t$(ss -tupl|grep ${udplinkport}|wc -l) \t$(ss -tupl|grep ${udplinkport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${udplinkport}|grep udp|awk '{ print $2 }')"
  146. else
  147. echo -e "UDP Link:"
  148. fi
  149. if [ -v voiceport ]; then
  150. echo -e "Voice: \t${voiceport} \t$(ss -tupl|grep ${voiceport}|wc -l) \t$(ss -tupl|grep ${voiceport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${voiceport}|grep udp|awk '{ print $2 }')"
  151. else
  152. echo -e "Voice:"
  153. fi
  154. if [ -v voiceunusedport ]; then
  155. echo -e "Voice (Unused): \t${voiceunusedport} \t$(ss -tupl|grep ${voiceunusedport}|wc -l) \t$(ss -tupl|grep ${voiceunusedport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${voiceunusedport}|grep udp|awk '{ print $2 }')"
  156. else
  157. echo -e "Voice (Unused):"
  158. fi
  159. if [ -v battleeyeport ]; then
  160. echo -e "BattleEye: \t${battleeyeport} \t$(ss -tupl|grep ${battleeyeport}|wc -l) \t$(ss -tupl|grep ${battleeyeport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${battleeyeport}|grep udp|awk '{ print $2 }')"
  161. else
  162. echo -e "BattleEye:"
  163. fi
  164. if [ -v statsport ]; then
  165. echo -e "Stats: \t${battleeyeport} \t$(ss -tupl|grep ${statsport}|wc -l) \t$(ss -tupl|grep ${statsport}|grep tcp|awk '{ print $2 }') \t$(ss -tupl|grep ${statsport}|grep udp|awk '{ print $2 }')"
  166. else
  167. echo -e "Stats:"
  168. fi
  169. } | column -s $'\t' -t
  170. echo -e ""
  171. echo -e "${lightgreen}SS Output${default}"
  172. echo -e "================================="
  173. fn_info_message_ports
  174. echo -e ""
  175. echo -e "${lightgreen}Query Port - Raw Output${default}"
  176. echo -e "=================================================================="
  177. echo -e ""
  178. echo -e "PORT: ${port}"
  179. echo -e "QUERY PORT: ${queryport}"
  180. echo -e ""
  181. echo -e "${lightgreen}Gamedig Raw Output${default}"
  182. echo -e "================================="
  183. echo -e ""
  184. if [ ! "$(command -v gamedig 2>/dev/null)" ]; then
  185. fn_print_failure_nl "gamedig not installed"
  186. fi
  187. if [ ! "$(command -v jq 2>/dev/null)" ]; then
  188. fn_print_failure_nl "jq not installed"
  189. fi
  190. for queryip in "${queryips[@]}"; do
  191. query_gamedig.sh
  192. echo -e "${gamedigcmd}"
  193. echo""
  194. echo "${gamedigraw}" | jq
  195. done
  196. echo -e ""
  197. echo -e "${lightgreen}gsquery Raw Output${default}"
  198. echo -e "================================="
  199. echo -e ""
  200. for queryip in "${queryips[@]}"; do
  201. echo -e "./query_gsquery.py -a \"${queryip}\" -p \"${queryport}\" -e \"${querytype}\""
  202. echo -e ""
  203. if [ ! -f "${functionsdir}/query_gsquery.py" ]; then
  204. fn_fetch_file_github "lgsm/functions" "query_gsquery.py" "${functionsdir}" "chmodx" "norun" "noforce" "nohash"
  205. fi
  206. "${functionsdir}"/query_gsquery.py -a "${queryip}" -p "${queryport}" -e "${querytype}"
  207. done
  208. echo -e ""
  209. echo -e "${lightgreen}TCP Raw Output${default}"
  210. echo -e "================================="
  211. echo -e ""
  212. for queryip in "${queryips[@]}"; do
  213. echo -e "bash -c 'exec 3<> /dev/tcp/'${queryip}'/'${queryport}''"
  214. echo -e ""
  215. timeout 3 bash -c 'exec 3<> /dev/tcp/'${queryip}'/'${queryport}''
  216. querystatus="$?"
  217. echo -e ""
  218. if [ "${querystatus}" == "0" ]; then
  219. echo -e "TCP query PASS"
  220. else
  221. echo -e "TCP query FAIL"
  222. fi
  223. done
  224. echo -e ""
  225. echo -e "${lightgreen}Game Port - Raw Output${default}"
  226. echo -e "=================================================================="
  227. echo -e ""
  228. echo -e "${lightgreen}TCP Raw Output${default}"
  229. echo -e "================================="
  230. echo -e ""
  231. for queryip in "${queryips[@]}"; do
  232. echo -e "bash -c 'exec 3<> /dev/tcp/'${queryip}'/'${port}''"
  233. echo -e ""
  234. timeout 3 bash -c 'exec 3<> /dev/tcp/'${queryip}'/'${port}''
  235. querystatus="$?"
  236. echo -e ""
  237. if [ "${querystatus}" == "0" ]; then
  238. echo -e "TCP query PASS"
  239. else
  240. echo -e "TCP query FAIL"
  241. fi
  242. done
  243. echo -e ""
  244. echo -e "${lightgreen}Steam Master Server Response${default}"
  245. echo -e "=================================================================="
  246. echo -e ""
  247. echo -e "Response: ${displaymasterserver}"
  248. echo -e ""
  249. exitcode=0
  250. core_exit.sh