sskcp.sh 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #!/bin/bash
  2. SERVER_IP=188.188.188.188
  3. PORT=1999
  4. PASSWORD=wg2999
  5. SS_PORT=40000
  6. start(){
  7. # SS + KcpTun + Udp2RAW
  8. udp2raw -c -r$SERVER_IP:$PORT -l0.0.0.0:4000 -k $PASSWORD --raw-mode faketcp -a >> /var/log/udp2raw.log &
  9. kcp-client -r 127.0.0.1:4000 -l :$SS_PORT --key $PASSWORD -mode fast2 -mtu 1300 >> /var/log/kcp-client.log 2>&1 &
  10. # ss-local -s 服务器IP地址 -p 服务器端口 -b 绑定本地IP -l 本地端口 -k 密码 -m 加密方式 [-c 配置文件]
  11. ss-local -s 127.0.0.1 -p $SS_PORT -b 0.0.0.0 -l 1080 -k $PASSWORD -m aes-256-gcm -t 300 >> /var/log/ss-local.log &
  12. status
  13. }
  14. stop(){
  15. killall -9 kcp-client
  16. killall -9 udp2raw
  17. killall -9 ss-local
  18. }
  19. restart(){
  20. stop
  21. start
  22. }
  23. help(){
  24. echo -e "${SkyBlue}:: Source: ${Green}https://git.io/sskcp.sh ${Font}By 蘭雅sRGB"
  25. echo -e "${SkyBlue}:: Usage: ${GreenBG} bash sskcp.sh ${Yellow} [start|stop|restart|set] ${Font}"
  26. echo
  27. }
  28. status(){
  29. # log 和 命令行参数
  30. cat /var/log/udp2raw.log | tail
  31. cat /var/log/kcp-client.log | tail
  32. cat /var/log/ss-local.log | tail
  33. echo
  34. if [[ -e /etc/openwrt_release ]]; then
  35. ps | grep -e udp2raw -e kcp-client -e ss-local
  36. else
  37. ps ax | grep --color=auto -e udp2raw -e kcp-client -e ss-local
  38. fi
  39. echo
  40. }
  41. setconf()
  42. {
  43. echo -e "${SkyBlue}:: 修改脚本sskcp.sh记录参数,按${RedBG}<Enter>${SkyBlue}不修改! ${Yellow}"
  44. head -n 6 sskcp.sh | tail -n 4 && echo -e "${SkyBlue}"
  45. read -p ":: 1.请输入远程服务器IP: " sv_ip
  46. read -p ":: 2.请输入udp2raw 端口: " port
  47. read -p ":: 3.请输入套接转发密码: " passwd
  48. read -p ":: 4.请输入 SS 服务端口: " ss_port
  49. if [[ ! -z "${sv_ip}" ]]; then
  50. sed -i "s/^SERVER_IP=.*/SERVER_IP=${sv_ip}/g" "sskcp.sh"
  51. fi
  52. if [[ ! -z "${port}" ]]; then
  53. sed -i "s/^PORT=.*/PORT=${port}/g" "sskcp.sh"
  54. fi
  55. if [[ ! -z "${passwd}" ]]; then
  56. sed -i "s/^PASSWORD=.*/PASSWORD=${passwd}/g" "sskcp.sh"
  57. fi
  58. if [[ ! -z "${ss_port}" ]]; then
  59. sed -i "s/^SS_PORT=.*/SS_PORT=${ss_port}/g" "sskcp.sh"
  60. fi
  61. echo -e "${Yellow}" && head -n 6 sskcp.sh | tail -n 4 && echo -e "${Font}"
  62. }
  63. system_def(){
  64. Green="\033[32m" && Red="\033[31m" && GreenBG="\033[42;37m" && RedBG="\033[41;37m"
  65. Font="\033[0m" && Yellow="\033[0;33m" && SkyBlue="\033[0;36m"
  66. }
  67. # 脚本命令参数
  68. system_def
  69. if [[ $# > 0 ]]; then
  70. key="$1"
  71. case $key in
  72. start)
  73. start
  74. ;;
  75. stop)
  76. stop
  77. ;;
  78. restart)
  79. restart
  80. ;;
  81. set)
  82. setconf
  83. ;;
  84. esac
  85. else
  86. status
  87. fi
  88. help