fn_deps_detect 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. #!/bin/bash
  2. # LGSM fn_dep_detect function
  3. # Author: Daniel Gibbs
  4. # Website: http://gameservermanagers.com
  5. # Version: 210615
  6. # Description: Detects dependencies the server binary requires.
  7. local modulename="Backup"
  8. fn_check_root
  9. fn_check_systemdir
  10. cd "${executabledir}"
  11. if [ "${executable}" == "./hlds_run" ];then
  12. executable=hlds_linux
  13. elif [ "${executable}" == "./srcds_run" ]||[ "${executable}" == "./dabds.sh" ]||[ "${executable}" == "./srcds_run.sh" ];then
  14. executable=srcds_linux
  15. elif [ "${executable}" == "./server_linux32" ];then
  16. executable=libSpark_Core.so
  17. elif [ "${executable}" == "./runSam3_DedicatedServer.sh" ];then
  18. executable=Sam3_DedicatedServer
  19. elif [ "${executable}" == "./7DaysToDie.sh" ];then
  20. executable=7DaysToDie.x86
  21. elif [ "${executable}" == "./ucc-bin" ];then
  22. if [ -f "${executabledir}/ucc-bin-real" ]; then
  23. executable=ucc-bin-real
  24. elif [ -f "${executabledir}/ut2004-bin" ]; then
  25. executable=ut2004-bin
  26. else
  27. executable=ut-bin
  28. fi
  29. elif [ "${executable}" == "./ts3server_startscript.sh" ];then
  30. executable=ts3server_linux_amd64
  31. fi
  32. readelf -d ${executable} |grep NEEDED|awk '{ print $5 }'|sed 's/\[//g'|sed 's/\]//g' > "${rootdir}/.depdetect_readelf"
  33. echo "yum install " > "${rootdir}/.depdetect_centos_list_uniq"
  34. echo "apt-get install " > "${rootdir}/.depdetect_ubuntu_list_uniq"
  35. echo "apt-get install " > "${rootdir}/.depdetect_debian_list_uniq"
  36. while read lib; do
  37. sharedlib=${lib}
  38. if [ "${lib}" == "libm.so.6" ]||[ "${lib}" == "libc.so.6" ]||[ "${lib}" == "libpthread.so.0" ]||[ "${lib}" == "libdl.so.2" ]||[ "${lib}" == "libnsl.so.1" ]||[ "${lib}" == "libgcc_s.so.1" ]||[ "${lib}" == "librt.so.1" ]||[ "${lib}" == "ld-linux.so.2" ];then
  39. echo "glibc.i686" >> "${rootdir}/.depdetect_centos_list"
  40. echo "lib32gcc1" >> "${rootdir}/.depdetect_ubuntu_list"
  41. echo "lib32gcc1" >> "${rootdir}/.depdetect_debian_list"
  42. elif [ "${lib}" == "libstdc++.so.6" ];then
  43. echo "libstdc++.i686" >> "${rootdir}/.depdetect_centos_list"
  44. echo "libstdc++6:i386" >> "${rootdir}/.depdetect_ubuntu_list"
  45. echo "libstdc++6:i386" >> "${rootdir}/.depdetect_debian_list"
  46. elif [ "${lib}" == "libstdc++.so.5" ];then
  47. echo "compat-libstdc++-33.i686" >> "${rootdir}/.depdetect_centos_list"
  48. echo "libstdc++5:i386" >> "${rootdir}/.depdetect_ubuntu_list"
  49. echo "libstdc++5:i386" >> "${rootdir}/.depdetect_debian_list"
  50. elif [ "${lib}" == "libspeex.so.1" ]||[ "${lib}" == "libspeexdsp.so.1" ];then
  51. echo "speex.i686" >> "${rootdir}/.depdetect_centos_list"
  52. echo "speex:i386" >> "${rootdir}/.depdetect_ubuntu_list"
  53. echo "speex:i386" >> "${rootdir}/.depdetect_debian_list"
  54. elif [ "${lib}" == "./libSDL-1.2.so.0" ]||[ "${lib}" == "libSDL-1.2.so.0" ];then
  55. echo "SDL.i686" >> "${rootdir}/.depdetect_centos_list"
  56. echo "libsdl1.2debian" >> "${rootdir}/.depdetect_ubuntu_list"
  57. echo "libsdl1.2debian" >> "${rootdir}/.depdetect_debian_list"
  58. elif [ "${lib}" == "libtier0.so" ]||[ "${lib}" == "Core.so" ]||[ "${lib}" == "Editor.so" ]||[ "${lib}" == "Engine.so" ]||[ "${lib}" == "liblua.so" ]||[ "${lib}" == "libsteam_api.so" ]||[ "${lib}" == "ld-linux-x86-64.so.2" ];then
  59. # Known shared libs what dont requires dependencies
  60. :
  61. else
  62. unknownlib=1
  63. echo "${lib}" >> "${rootdir}/.depdetect_unknown"
  64. fi
  65. done < "${rootdir}/.depdetect_readelf"
  66. sort "${rootdir}/.depdetect_centos_list" | uniq >> "${rootdir}/.depdetect_centos_list_uniq"
  67. sort "${rootdir}/.depdetect_ubuntu_list" | uniq >> "${rootdir}/.depdetect_ubuntu_list_uniq"
  68. sort "${rootdir}/.depdetect_debian_list" | uniq >> "${rootdir}/.depdetect_debian_list_uniq"
  69. if [ "${unknownlib}" == "1" ];then
  70. sort "${rootdir}/.depdetect_unknown" | uniq >> "${rootdir}/.depdetect_unknown_uniq"
  71. fi
  72. awk -vORS=' ' '{ print $1, $2 }' "${rootdir}/.depdetect_centos_list_uniq" > "${rootdir}/.depdetect_centos_line"
  73. awk -vORS=' ' '{ print $1, $2 }' "${rootdir}/.depdetect_ubuntu_list_uniq" > "${rootdir}/.depdetect_ubuntu_line"
  74. awk -vORS=' ' '{ print $1, $2 }' "${rootdir}/.depdetect_debian_list_uniq" > "${rootdir}/.depdetect_debian_line"
  75. echo ""
  76. echo "Required Dependencies"
  77. echo "================================="
  78. echo "${executable}"
  79. echo ""
  80. echo "CentOS"
  81. echo "================================="
  82. cat "${rootdir}/.depdetect_centos_line"
  83. echo ""
  84. echo ""
  85. echo "Ubuntu"
  86. echo "================================="
  87. cat "${rootdir}/.depdetect_ubuntu_line"
  88. echo ""
  89. echo ""
  90. echo "Debian"
  91. echo "================================="
  92. cat "${rootdir}/.depdetect_debian_line"
  93. echo ""
  94. if [ "${unknownlib}" == "1" ];then
  95. echo ""
  96. echo "Unknown shared Library"
  97. echo "================================="
  98. cat "${rootdir}/.depdetect_unknown"
  99. fi
  100. echo ""
  101. echo "Required Librarys"
  102. echo "================================="
  103. sort "${rootdir}/.depdetect_readelf" |uniq
  104. echo -en "\n"
  105. rm -f "${rootdir}/.depdetect_centos_line"
  106. rm -f "${rootdir}/.depdetect_centos_list"
  107. rm -f "${rootdir}/.depdetect_centos_list"
  108. rm -f "${rootdir}/.depdetect_centos_list_uniq"
  109. rm -f "${rootdir}/.depdetect_debian_list"
  110. rm -f "${rootdir}/.depdetect_debian_list_uniq"
  111. rm -f "${rootdir}/.depdetect_readelf"
  112. rm -f "${rootdir}/.depdetect_ubuntu_list"
  113. rm -f "${rootdir}/.depdetect_ubuntu_list_uniq"
  114. rm -f "${rootdir}/.depdetect_unknown"
  115. rm -f "${rootdir}/.depdetect_unknown_uniq"