vlmcs.d 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #!/bin/bash
  2. # Autorun whit crontab by MoeClub
  3. MyARG=`echo "$1" |sed 's/^\s$//' |sed 's/[a-z]/\u&/g'`
  4. MyPort="1688"
  5. MyPath="$(dirname `readlink -f "$0"`)"
  6. MyExec="${MyPath}/vlmcsdmulti"
  7. [ -n "${MyPort}" ] || exit 1
  8. [ -f "${MyExec}" ] || exit 1
  9. IPTABLES(){
  10. RULE_RAW=`echo "$1" |sed 's/^\s*//' |sed 's/\s*$//'`
  11. echo "$RULE_RAW" |grep -q "^iptables"
  12. [ $? -eq 0 ] || return 1
  13. RULE_CHECK=`echo "$RULE_RAW" |sed 's/-I\|-A/-C/'`
  14. ${RULE_CHECK} >>/dev/null 2>&1
  15. [ $? -eq 1 ] && ${RULE_RAW}
  16. return 0
  17. }
  18. INIT(){
  19. MyCMD=`echo "$1" |sed 's/^\s$//'`
  20. [ -n "${MyCMD}" ] || MyCMD=`readlink -f "$0"`
  21. [ -n "${MyCMD}" ] && MyDEL=$(echo "${MyCMD}" |tr '/' '\\\\' |sed 's/\\/\\\//g')
  22. [ -n "${MyDEL}" ] || return
  23. if [ -f /etc/crontab ]; then
  24. sed -i "/${MyDEL}/d" /etc/crontab
  25. while [ -z "$(sed -n '$p' /etc/crontab |sed 's/^\s$//')" ]; do sed -i '$d' /etc/crontab; done
  26. sed -i "\$a\\@reboot root ${MyCMD} >>/dev/null 2>&1 &" /etc/crontab
  27. sed -i '$a\\n\n\n' /etc/crontab
  28. fi
  29. }
  30. STOP(){
  31. DEAMONS=("vlmcsd" "vlmcsdmulti")
  32. for deamon in "${DEAMONS[@]}"; do [ -n "$deamon" ] && kill -9 `ps -C "$deamon" -o pid=` >>/dev/null 2>&1; done
  33. }
  34. START(){
  35. STOP;
  36. IPTABLES "iptables -I INPUT -p tcp --dport ${MyPort} -j ACCEPT"
  37. "${MyExec}" vlmcsd >>/dev/null 2>&1;
  38. }
  39. PORT(){
  40. nc -w 1 -vz 0.0.0.0 "${MyPort}" >>/dev/null 2>&1;
  41. [ "$?" == "0" ] && echo "0" || echo "1";
  42. }
  43. SCAN(){
  44. if [[ "$(PORT)" == "0" ]]; then
  45. sleep 300;
  46. else
  47. START;
  48. sleep 10;
  49. fi
  50. }
  51. if [ "$MyARG" == "INIT" ]; then
  52. INIT;
  53. exit 0;
  54. elif [ "$MyARG" == "START" ]; then
  55. START;
  56. exit 0;
  57. elif [ "$MyARG" == "RESTART" ]; then
  58. START;
  59. exit 0;
  60. elif [ "$MyARG" == "STOP" ]; then
  61. STOP;
  62. exit 0;
  63. fi
  64. command -v nc >>/dev/null 2>&1
  65. if [ $? -ne 0 ]; then
  66. START;
  67. exit 0;
  68. fi
  69. while true; do SCAN; done