4
0

fn_deps_detect 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #!/bin/bash
  2. # LGSM fn_dep_detect function
  3. # Author: Daniel Gibbs
  4. # Website: http://gameservermanagers.com
  5. # Version: 200615
  6. # Description: Detects dependencies the server binary requires.
  7. local modulename="Backup"
  8. fn_check_root
  9. fn_check_systemdir
  10. cd ${executabledir}
  11. readelf -d ${executable} |grep NEEDED|awk '{ print $5 }'|sed 's/\[//g'|sed 's/\]//g' > ${rootdir}/.depdetect_readelf
  12. echo "yum install " > ${rootdir}/.depdetect_centos_list_uniq
  13. echo "apt-get install " > ${rootdir}/.depdetect_ubuntu_list_uniq
  14. echo "apt-get install " > ${rootdir}/.depdetect_debian_list_uniq
  15. while read lib; do
  16. sharedlib=${lib}
  17. if [ "${lib}" == "libm.so.6" ]||[ ${lib} == "libc.so.6" ]||[ ${lib} == "libpthread.so.0" ]||[ ${lib} == "libdl.so.2" ]||[ ${lib} == "libnsl.so.1" ];then
  18. echo "glibc.i386" >> ${rootdir}/.depdetect_centos_list
  19. echo "lib32gcc1" >> ${rootdir}/.depdetect_ubuntu_list
  20. echo "lib32gcc1" >> ${rootdir}/.depdetect_debian_list
  21. elif [ "${lib}" == "libstdc++.so.6" ];then
  22. echo "libstdc++.i686" >> ${rootdir}/.depdetect_centos_list
  23. echo "libstdc++6:i386" >> ${rootdir}/.depdetect_ubuntu_list
  24. echo "libstdc++6:i386" >> ${rootdir}/.depdetect_debian_list
  25. elif [ "${lib}" == "libtier0.so" ]||[ "${lib}" == "Core.so" ]||[ "${lib}" == "Editor.so" ]||[ "${lib}" == "Engine.so" ];then
  26. # Known shared libs what dont requires dependencies
  27. :
  28. else
  29. unknownlib=1
  30. echo "${lib}" >> ${rootdir}/.depdetect_unknown
  31. fi
  32. done < ${rootdir}/.depdetect_readelf
  33. sort ${rootdir}/.depdetect_centos_list | uniq >> ${rootdir}/.depdetect_centos_list_uniq
  34. sort ${rootdir}/.depdetect_ubuntu_list | uniq >> ${rootdir}/.depdetect_ubuntu_list_uniq
  35. sort ${rootdir}/.depdetect_debian_list | uniq >> ${rootdir}/.depdetect_debian_list_uniq
  36. if [ "${unknownlib}" == "1" ];then
  37. sort ${rootdir}/.depdetect_unknown | uniq >> ${rootdir}/.depdetect_unknown_uniq
  38. fi
  39. awk -vORS=' ' '{ print $1, $2 }' ${rootdir}/.depdetect_centos_list_uniq > ${rootdir}/.depdetect_centos_line
  40. awk -vORS=' ' '{ print $1, $2 }' ${rootdir}/.depdetect_ubuntu_list_uniq > ${rootdir}/.depdetect_ubuntu_line
  41. awk -vORS=' ' '{ print $1, $2 }' ${rootdir}/.depdetect_debian_list_uniq > ${rootdir}/.depdetect_debian_line
  42. echo ""
  43. echo "Required Dependencies"
  44. echo "================================="
  45. echo "${executable}"
  46. echo ""
  47. echo "CentOS"
  48. echo "================================="
  49. cat ${rootdir}/.depdetect_centos_line
  50. echo ""
  51. echo ""
  52. echo "Ubuntu"
  53. echo "================================="
  54. cat ${rootdir}/.depdetect_ubuntu_line
  55. echo ""
  56. echo ""
  57. echo "Debian"
  58. echo "================================="
  59. cat ${rootdir}/.depdetect_debian_line
  60. echo ""
  61. if [ "${unknownlib}" == "1" ];then
  62. echo ""
  63. echo "Unknown shared Library"
  64. echo "================================="
  65. cat ${rootdir}/.depdetect_unknown
  66. fi
  67. echo ""
  68. echo "Required Librarys"
  69. echo "================================="
  70. sort ${rootdir}/.depdetect_readelf |uniq
  71. echo -en "\n"
  72. rm -f ${rootdir}/.depdetect_centos_line
  73. rm -f ${rootdir}/.depdetect_centos_list
  74. rm -f ${rootdir}/.depdetect_centos_list
  75. rm -f ${rootdir}/.depdetect_centos_list_uniq
  76. rm -f ${rootdir}/.depdetect_debian_list
  77. rm -f ${rootdir}/.depdetect_debian_list_uniq
  78. rm -f ${rootdir}/.depdetect_readelf
  79. rm -f ${rootdir}/.depdetect_ubuntu_list
  80. rm -f ${rootdir}/.depdetect_ubuntu_list_uniq
  81. rm -f ${rootdir}/.depdetect_unknown
  82. rm -f ${rootdir}/.depdetect_unknown_uniq