fn_details 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402
  1. #!/bin/bash
  2. # LGSM fn_details function
  3. # Author: Daniel Gibbs
  4. # Website: http://danielgibbs.co.uk
  5. # Version: 220115
  6. # Description: Displays server infomation.
  7. # Standard Details
  8. # This applies to all engines
  9. fn_details_os(){
  10. echo -e ""
  11. echo -e "\e[93mDistro Details\e[0m"
  12. printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
  13. echo -e "\e[34mDistro:£\e[0m${os}" >> .fn_details_distro
  14. echo -e "\e[34mArch:£\e[0m${arch}" >> .fn_details_distro
  15. echo -e "\e[34mKernel:£\e[0m${kernel}" >> .fn_details_distro
  16. echo -e "\e[34mHostname:£\e[0m$HOSTNAME" >> .fn_details_distro
  17. echo -e "\e[34mtmux:£\e[0m${tmuxv}" >> .fn_details_distro
  18. echo -e "\e[34mGLIBC:£\e[0m${glibcv}" >> .fn_details_distro
  19. column -s '£' -t .fn_details_distro
  20. rm -f .fn_details_distro
  21. }
  22. fn_details_performance(){
  23. echo -e ""
  24. echo -e "\e[93mPerformance\e[0m"
  25. printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
  26. echo -e "\e[34mUptime:£\e[0m${days}d, ${hours}h, ${minutes}m" >> .fn_details_performance
  27. echo -e "\e[34mAvg Load:£\e[0m${load}" >> .fn_details_performance
  28. column -s '£' -t .fn_details_performance
  29. rm -f .fn_details_performance
  30. echo -e ""
  31. echo -e "\e[34mMem:£\e[34mtotal£ used£ free\e[0m" >> .fn_details_performance
  32. echo -e "\e[34mPhysical:£\e[0m${physmemtotal}£${physmemused}£${physmemfree}\e[0m" >> .fn_details_performance
  33. echo -e "\e[34mSwap:£\e[0m${swaptotal}£${swapused}£${swapfree}\e[0m" >> .fn_details_performance
  34. column -s '£' -t .fn_details_performance
  35. rm -f .fn_details_performance
  36. }
  37. fn_details_disk(){
  38. echo -e ""
  39. echo -e "\e[93mDisk Usage\e[0m"
  40. printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
  41. echo -e "\e[34mDisk available:£\e[0m${availspace}" >> .fn_details_disk
  42. echo -e "\e[34mServerfiles:£\e[0m${serverfilesdu}" >> .fn_details_disk
  43. if [ -d "${backupdir}" ]; then
  44. echo -e "\e[34mBackups:£\e[0m${backupdirdu}" >> .fn_details_disk
  45. fi
  46. column -s '£' -t .fn_details_disk
  47. rm -f .fn_details_disk
  48. }
  49. fn_details_gameserver(){
  50. if [ ! -e ${servercfgfullpath} ]; then
  51. servername="\e[0;31mCONFIG FILE MISSING!\e[0m"
  52. rcon="\e[0;31mCONFIG FILE MISSING!\e[0m"
  53. servercfgfullpath="${servercfgfullpath} \e[0;31mCONFIG FILE MISSING!!\e[0m"
  54. fi
  55. echo -e ""
  56. echo -e "\e[92m${gamename} Server Details\e[0m"
  57. printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
  58. echo -e "\e[34mServer name:£\e[0m${servername}" >> .fn_details_gameserver
  59. echo -e "\e[34mServer IP:£\e[0m${ip}:${port}" >> .fn_details_gameserver
  60. if [ ! -z "${rcon}" ]; then
  61. echo -e "\e[34mRCON password:£\e[0m${rcon}" >> .fn_details_gameserver
  62. fi
  63. pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -E "^${servicename}:"|wc -l)
  64. if [ "${pid}" == "0" ]; then
  65. echo -e "\e[34mStatus:£\e[0;31mOFFLINE\e[0m" >> .fn_details_gameserver
  66. else
  67. echo -e "\e[34mStatus:£\e[0;32mONLINE\e[0m" >> .fn_details_gameserver
  68. fi
  69. column -s '£' -t .fn_details_gameserver
  70. rm -f .fn_details_gameserver
  71. echo -e ""
  72. echo -e "\e[34mService name:£\e[0m${servicename}" >> .fn_details_gameserver
  73. echo -e "\e[34mUser:£\e[0m$(whoami)" >> .fn_details_gameserver
  74. echo -e "\e[34mLocation:£\e[0m${rootdir}" >> .fn_details_gameserver
  75. if [ ! -z "${servercfgfullpath}" ]; then
  76. echo -e "\e[34mConfig file:£\e[0m${servercfgfullpath}" >> .fn_details_gameserver
  77. fi
  78. column -s '£' -t .fn_details_gameserver
  79. rm -f .fn_details_gameserver
  80. }
  81. fn_details_backup(){
  82. echo -e ""
  83. echo -e "\e[92mBackups\e[0m"
  84. printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
  85. if [ ! -d "${backupdir}" ]||[ "${backupcount}" == "0" ]; then
  86. echo -e "No Backups created"
  87. else
  88. echo -e "\e[34mNo. of backups:£\e[0m${backupcount}" >> .fn_details_backup
  89. echo -e "\e[34mLatest backup:\e[0m" >> .fn_details_backup
  90. echo -e "\e[34m date:£\e[0m${lastbackupdate}" >> .fn_details_backup
  91. echo -e "\e[34m file:£\e[0m${lastbackup}" >> .fn_details_backup
  92. echo -e "\e[34m size:£\e[0m${lastbackupsize}" >> .fn_details_backup
  93. column -s '£' -t .fn_details_backup
  94. rm -f .fn_details_backup
  95. fi
  96. }
  97. fn_details_commandlineparms(){
  98. echo -e ""
  99. echo -e "\e[92mCommand-line Parameters\e[0m"
  100. printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
  101. echo -e "${executable} ${parms}"
  102. }
  103. fn_details_statusbottom(){
  104. echo -e ""
  105. if [ "${pid}" == "0" ]; then
  106. echo -e "\e[34mStatus: \e[0;31mOFFLINE\e[0m"
  107. else
  108. echo -e "\e[34mStatus: \e[0;32mONLINE\e[0m"
  109. fi
  110. echo -e ""
  111. }
  112. # Engine Specific details
  113. fn_avalanchedetails(){
  114. fn_check_ip
  115. fn_details_config
  116. fn_details_distro
  117. fn_details_os
  118. fn_details_performance
  119. fn_details_disk
  120. fn_details_gameserver
  121. fn_details_backup
  122. pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -E "^${servicename}:"|wc -l)
  123. echo -e ""
  124. echo -e "\e[92mPorts\e[0m"
  125. printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
  126. echo -e "Change ports by editing the command-line"
  127. echo -e "parameters in ${selfname}."
  128. echo -e ""
  129. echo -e "Useful port diagnostic command:"
  130. echo -e "netstat -atunp | grep Jcmp-Server"
  131. echo -e ""
  132. echo -e "DESCRIPTION£DIRECTION£PORT£PROTOCOL" >> .fn_details_ports
  133. echo -e "> Game/RCON£INBOUND£${port}£udp" >> .fn_details_ports
  134. column -s '£' -t .fn_details_ports
  135. rm -f .fn_details_ports
  136. fn_details_statusbottom
  137. }
  138. fn_realvirtualitydetails(){
  139. fn_check_ip
  140. pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -E "^${servicename}:"|wc -l)
  141. fn_parms
  142. fn_details_config
  143. fn_details_distro
  144. fn_details_os
  145. fn_details_performance
  146. fn_details_disk
  147. fn_details_gameserver
  148. fn_details_backup
  149. fn_details_commandlineparms
  150. echo -e ""
  151. echo -e "\e[92mPorts\e[0m"
  152. printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
  153. echo -e "Change ports by editing the parameters in"
  154. echo -e "${servercfgfullpath}."
  155. echo -e ""
  156. echo -e "Useful port diagnostic command:"
  157. echo -e "netstat -atunp | grep arma3server"
  158. echo -e ""
  159. if [ -z ${port} ] || [ -z ${queryport} ] || [ -z ${masterport} ] ; then
  160. echo -e "\e[0;31mERROR!\e[0m Missing/commented ports in ${servercfg}."
  161. echo -e ""
  162. fi
  163. echo -e "DESCRIPTION£DIRECTION£PORT£PROTOCOL" >> .fn_details_ports
  164. echo -e "> Game£INBOUND£${port}£udp" >> .fn_details_ports
  165. echo -e "> Steam: Query£INBOUND£${queryport}£udp" >> .fn_details_ports
  166. echo -e "> Steam: Master traffic£INBOUND£${masterport}£udp" >> .fn_details_ports
  167. column -s '£' -t .fn_details_ports
  168. rm -f .fn_details_ports
  169. fn_details_statusbottom
  170. }
  171. fn_seriousengine35details(){
  172. fn_check_ip
  173. pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -E "^${servicename}:"|wc -l)
  174. fn_parms
  175. fn_details_config
  176. fn_details_distro
  177. fn_details_os
  178. fn_details_performance
  179. fn_details_disk
  180. fn_details_gameserver
  181. fn_details_backup
  182. fn_details_commandlineparms
  183. echo -e ""
  184. echo -e "\e[92mPorts\e[0m"
  185. printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
  186. echo -e "Change ports by editing the parameters in"
  187. echo -e "${servercfgfullpath}."
  188. echo -e ""
  189. echo -e "Useful port diagnostic command:"
  190. echo -e "netstat -atunp | grep Sam3_Dedicate"
  191. echo -e ""
  192. echo -e "DESCRIPTION£DIRECTION£PORT£PROTOCOL" >> .fn_details_ports
  193. echo -e "> Game/RCON£INBOUND£${port}£tcp" >> .fn_details_ports
  194. echo -e "> Query£INBOUND£${queryport}£udp" >> .fn_details_ports
  195. column -s '£' -t .fn_details_ports
  196. rm -f .fn_details_ports
  197. fn_details_statusbottom
  198. }
  199. fn_sourcedetails(){
  200. fn_check_ip
  201. fn_parms
  202. fn_details_config
  203. fn_details_distro
  204. fn_details_os
  205. fn_details_performance
  206. fn_details_disk
  207. fn_details_gameserver
  208. fn_details_backup
  209. fn_details_commandlineparms
  210. echo -e ""
  211. echo -e "\e[92mPorts\e[0m"
  212. printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
  213. echo -e "Change ports by editing the command-line"
  214. echo -e "parameters in ${selfname}."
  215. echo -e ""
  216. echo -e "Useful port diagnostic command:"
  217. echo -e "netstat -atunp | grep srcds_linux"
  218. echo -e ""
  219. echo -e "DESCRIPTION£DIRECTION£PORT£PROTOCOL" >> .fn_details_ports
  220. echo -e "> Game/RCON£INBOUND£${port}£tcp/udp" >> .fn_details_ports
  221. if [ ! -z "${sourcetvport}" ]; then
  222. echo -e "> SourceTV£INBOUND£${sourcetvport}£udp" >> .fn_details_ports
  223. fi
  224. echo -e "< Client£OUTBOUND£${clientport}£udp" >> .fn_details_ports
  225. column -s '£' -t .fn_details_ports
  226. rm -f .fn_details_ports
  227. fn_details_statusbottom
  228. }
  229. fn_sparkdetails(){
  230. fn_check_ip
  231. pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -E "^${servicename}:"|wc -l)
  232. fn_parms
  233. fn_details_config
  234. fn_details_distro
  235. fn_details_os
  236. fn_details_performance
  237. fn_details_disk
  238. fn_details_gameserver
  239. fn_details_backup
  240. fn_details_commandlineparms
  241. echo -e ""
  242. echo -e "\e[92mPorts\e[0m"
  243. printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
  244. echo -e "Change ports by editing the command-line"
  245. echo -e "parameters in ${selfname}."
  246. echo -e ""
  247. echo -e "Useful port diagnostic command:"
  248. echo -e "netstat -atunp | grep server_linux3"
  249. echo -e ""
  250. echo -e "DESCRIPTION£DIRECTION£PORT£PROTOCOL" >> .fn_details_ports
  251. echo -e "> Game/RCON£INBOUND£${port}£udp" >> .fn_details_ports
  252. echo -e "> Query£INBOUND£${queryport}£udp" >> .fn_details_ports
  253. echo -e "> WebAdmin£INBOUND£${webadminport}£tcp" >> .fn_details_ports
  254. column -s '£' -t .fn_details_ports
  255. rm -f .fn_details_ports
  256. echo -e ""
  257. echo -e "\e[92m${servername} WebAdmin\e[0m"
  258. printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
  259. echo -e "\e[34mWebAdmin url:£\e[0mhttp://${ip}:${webadminport}/index.html" >> .fn_details_ports
  260. echo -e "\e[34mWebAdmin username:£\e[0m${webadminuser}" >> .fn_details_ports
  261. echo -e "\e[34mWebAdmin password:£\e[0m${webadminpass}" >> .fn_details_ports
  262. column -s '£' -t .fn_details_ports
  263. rm -f .fn_details_ports
  264. fn_details_statusbottom
  265. }
  266. fn_unity3ddetails(){
  267. fn_check_ip
  268. pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -E "^${servicename}:"|wc -l)
  269. fn_parms
  270. fn_details_config
  271. fn_details_distro
  272. fn_details_os
  273. fn_details_performance
  274. fn_details_disk
  275. fn_details_gameserver
  276. fn_details_backup
  277. fn_details_commandlineparms
  278. echo -e ""
  279. echo -e "\e[92mPorts\e[0m"
  280. printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
  281. echo -e "Change ports by editing the parameters in"
  282. echo -e "${servercfgfullpath}."
  283. echo -e ""
  284. echo -e "Useful port diagnostic command:"
  285. echo -e "netstat -atunp | grep 7DaysToDie"
  286. echo -e ""
  287. echo -e "DESCRIPTION£DIRECTION£PORT£PROTOCOL" >> .fn_details_ports
  288. echo -e "> Game/RCON£INBOUND£${port}£udp" >> .fn_details_ports
  289. echo -e "> Query£INBOUND£${queryport}£udp" >> .fn_details_ports
  290. echo -e "> WebAdmin£INBOUND£${webadminport}£tcp" >> .fn_details_ports
  291. echo -e "> Telnet£INBOUND£${telnetport}£tcp" >> .fn_details_ports
  292. column -s '£' -t .fn_details_ports
  293. rm -f .fn_details_ports
  294. echo -e ""
  295. echo -e "\e[92m${servername} WebAdmin\e[0m"
  296. printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
  297. echo -e "\e[34mWebAdmin enabled:£\e[0m${webadminenabled}" >> .fn_details_ports
  298. echo -e "\e[34mWebAdmin url:£\e[0mhttp://${ip}:${webadminport}" >> .fn_details_ports
  299. echo -e "\e[34mWebAdmin password:£\e[0m${webadminpass}" >> .fn_details_ports
  300. column -s '£' -t .fn_details_ports
  301. rm -f .fn_details_ports
  302. echo -e ""
  303. echo -e "\e[92m${servername} Telnet\e[0m"
  304. printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
  305. echo -e "\e[34mTelnet enabled:£\e[0m${telnetenabled}" >> .fn_details_ports
  306. echo -e "\e[34mTelnet address:£\e[0m${ip}:${telnetport}" >> .fn_details_ports
  307. echo -e "\e[34mTelnet password:£\e[0m${telnetpass}" >> .fn_details_ports
  308. column -s '£' -t .fn_details_ports
  309. rm -f .fn_details_ports
  310. fn_details_statusbottom
  311. }
  312. fn_unrealdetails(){
  313. fn_check_ip
  314. pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -E "^${servicename}:"|wc -l)
  315. fn_parms
  316. fn_details_config
  317. fn_details_distro
  318. fn_details_os
  319. fn_details_performance
  320. fn_details_disk
  321. fn_details_gameserver
  322. fn_details_backup
  323. fn_details_commandlineparms
  324. echo -e ""
  325. echo -e "\e[92mPorts\e[0m"
  326. printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
  327. echo -e "Change ports by editing the parameters in"
  328. echo -e "${servercfgfullpath}."
  329. echo -e ""
  330. echo -e "Useful port diagnostic command:"
  331. echo -e "netstat -atunp | grep ucc-bin"
  332. echo -e ""
  333. echo -e "DESCRIPTION£DIRECTION£PORT£PROTOCOL£INI VARIABLE" >> .fn_details_ports
  334. echo -e "> Game£INBOUND£${port}£udp£Port=${port}" >> .fn_details_ports
  335. echo -e "> Query£INBOUND£${queryport}£udp" >> .fn_details_ports
  336. if [ "${engine}" == "unreal" ]; then
  337. echo -e "< UdpLink Port (random)£OUTBOUND£${udplinkport}+£udp" >> .fn_details_ports
  338. fi
  339. if [ "${engine}" != "unreal" ] && [ "${appid}" != "223250" ]; then
  340. echo -e "> GameSpy query£INBOUND£${gsqueryport}£udp£OldQueryPortNumber=${gsqueryport}" >> .fn_details_ports
  341. fi
  342. if [ "${appid}" == "215360" ]; then
  343. echo -e "< Master server£OUTBOUND£28852£tcp/udp" >> .fn_details_ports
  344. else
  345. echo -e "< Master server£OUTBOUND£28900/28902£tcp/udp" >> .fn_details_ports
  346. fi
  347. if [ "${appid}" ]; then
  348. if [ "${appid}" == "223250" ]; then
  349. echo -e "< Steam£OUTBOUND£20610£udp" >> .fn_details_ports
  350. else
  351. echo -e "< Steam£OUTBOUND£20660£udp" >> .fn_details_ports
  352. fi
  353. fi
  354. echo -e "> WebAdmin£INBOUND£${webadminport}£tcp£ListenPort=${webadminport}" >> .fn_details_ports
  355. column -s '£' -t .fn_details_ports
  356. rm -f .fn_details_ports
  357. echo -e ""
  358. echo -e "\e[92m${servername} WebAdmin\e[0m"
  359. printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
  360. echo -e "\e[34mWebAdmin enabled:£\e[0m${webadminenabled}" >> .fn_details_ports
  361. echo -e "\e[34mWebAdmin url:£\e[0mhttp://${ip}:${webadminport}" >> .fn_details_ports
  362. echo -e "\e[34mWebAdmin user:£\e[0m${webadminuser}" >> .fn_details_ports
  363. echo -e "\e[34mWebAdmin password:£\e[0m${webadminpass}" >> .fn_details_ports
  364. column -s '£' -t .fn_details_ports
  365. rm -f .fn_details_ports
  366. fn_details_statusbottom
  367. }
  368. if [ "${engine}" == "avalanche" ]; then
  369. fn_avalanchedetails
  370. elif [ "${engine}" == "realvirtuality" ]; then
  371. fn_realvirtualitydetails
  372. elif [ "${engine}" == "seriousengine35" ]; then
  373. fn_seriousengine35details
  374. elif [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then
  375. fn_sourcedetails
  376. elif [ "${engine}" == "spark" ]; then
  377. fn_sparkdetails
  378. elif [ "${engine}" == "unity3d" ]; then
  379. fn_unity3ddetails
  380. elif [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then
  381. fn_unrealdetails
  382. else
  383. fn_printerrornl "Unable to detect server engine."
  384. fi