vlmcs.d 1.4 KB

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