run.sh 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #!/bin/bash
  2. function usage() {
  3. echo "Usage:"
  4. echo " run.sh [CONFIG]"
  5. echo "example 1 :"
  6. echo " run.sh -e canal.instance.master.address=127.0.0.1:3306 \\"
  7. echo " -e canal.instance.dbUsername=canal \\"
  8. echo " -e canal.instance.dbPassword=canal \\"
  9. echo " -e canal.instance.connectionCharset=UTF-8 \\"
  10. echo " -e canal.instance.tsdb.enable=true \\"
  11. echo " -e canal.instance.gtidon=false \\"
  12. echo " -e canal.instance.filter.regex=.*\\\\\\..* "
  13. echo "example 2 :"
  14. echo " run.sh -e canal.admin.manager=127.0.0.1:8089 \\"
  15. echo " -e canal.admin.port=11110 \\"
  16. echo " -e canal.admin.user=admin \\"
  17. echo " -e canal.admin.passwd=4ACFE3202A5FF5CF467898FC58AAB1D615029441"
  18. exit
  19. }
  20. function check_port() {
  21. local port=$1
  22. local TL=$(which telnet)
  23. if [ -f $TL ]; then
  24. data=`echo quit | telnet 127.0.0.1 $port| grep -ic connected`
  25. echo $data
  26. return
  27. fi
  28. local NC=$(which nc)
  29. if [ -f $NC ]; then
  30. data=`nc -z -w 1 127.0.0.1 $port | grep -ic succeeded`
  31. echo $data
  32. return
  33. fi
  34. echo "0"
  35. return
  36. }
  37. function getMyIp() {
  38. case "`uname`" in
  39. Darwin)
  40. myip=`echo "show State:/Network/Global/IPv4" | scutil | grep PrimaryInterface | awk '{print $3}' | xargs ifconfig | grep inet | grep -v inet6 | awk '{print $2}'`
  41. ;;
  42. *)
  43. myip=`ip route get 1 | awk '{print $NF;exit}'`
  44. ;;
  45. esac
  46. echo $myip
  47. }
  48. NET_MODE=""
  49. case "`uname`" in
  50. Darwin)
  51. bin_abs_path=`cd $(dirname $0); pwd`
  52. ;;
  53. Linux)
  54. bin_abs_path=$(readlink -f $(dirname $0))
  55. NET_MODE="--net=host"
  56. ;;
  57. *)
  58. NET_MODE="--net=host"
  59. bin_abs_path=`cd $(dirname $0); pwd`
  60. ;;
  61. esac
  62. BASE=${bin_abs_path}
  63. if [ $# -eq 0 ]; then
  64. usage
  65. elif [ "$1" == "-h" ] ; then
  66. usage
  67. elif [ "$1" == "help" ] ; then
  68. usage
  69. fi
  70. DATA="$BASE/data"
  71. mkdir -p $DATA
  72. CONFIG=${@:1}
  73. #VOLUMNS="-v $DATA:/home/admin/canal-server/logs"
  74. PORTLIST="11110 11111 11112 9100"
  75. PORTS=""
  76. for PORT in $PORTLIST ; do
  77. #exist=`check_port $PORT`
  78. exist="0"
  79. if [ "$exist" == "0" ]; then
  80. PORTS="$PORTS -p $PORT:$PORT"
  81. else
  82. echo "port $PORT is used , pls check"
  83. exit 1
  84. fi
  85. done
  86. MEMORY="-m 4096m"
  87. LOCALHOST=`getMyIp`
  88. cmd="docker run -d -it -h $LOCALHOST $CONFIG --name=canal-server $VOLUMNS $NET_MODE $PORTS $MEMORY canal/canal-server"
  89. echo $cmd
  90. eval $cmd