sskcp.sh 3.0 KB

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