commit 74e4a2a3a951e3be6a280dcd1be693a83beaf623 Author: hitsword Date: Wed Mar 4 21:37:12 2020 +0800 初始化 Signed-off-by: hitsword diff --git a/README.md b/README.md new file mode 100644 index 0000000..4fb87f0 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +udp2raw和UDPspeeder安装配置工具 \ No newline at end of file diff --git a/systemctl/service/udp2raw-server@.service b/systemctl/service/udp2raw-server@.service new file mode 100644 index 0000000..b4608b1 --- /dev/null +++ b/systemctl/service/udp2raw-server@.service @@ -0,0 +1,17 @@ +[Unit] # 主要是服务说明 +Description=Udp2Raw - %i # 简单描述服务 +After=network.target # 描述服务类别,表示本服务需要在network服务启动后在启动 +Before= # 表示需要在某些服务启动之前启动,After和Before字段只涉及启动顺序,不涉及依赖关系。 + +[Service] # 核心区域 +Type=forking # 表示后台运行模式。 +User=nobody # 设置服务运行的用户 +Group=nobody # 设置服务运行的用户组 +KillMode=control-group # 定义systemd如何停止服务 +PIDFile=/usr/local/udptools/pid/udp2raw-%i.pid # 存放PID的绝对路径 +Restart=no # 定义服务进程退出后,systemd的重启方式,默认是不重启 +ExecStart=/usr/local/udptools/udp2raw-%i.sh # 服务启动命令,命令需要绝对路径 +PrivateTmp=true # 表示给服务分配独立的临时空间 + +[Install] +WantedBy=multi-user.target # 多用户 \ No newline at end of file diff --git a/systemctl/service/udpspeeder@.service b/systemctl/service/udpspeeder@.service new file mode 100644 index 0000000..8074337 --- /dev/null +++ b/systemctl/service/udpspeeder@.service @@ -0,0 +1,17 @@ +[Unit] # 主要是服务说明 +Description=UdpSpeeder - %i # 简单描述服务 +After=network.target # 描述服务类别,表示本服务需要在network服务启动后在启动 +Before= # 表示需要在某些服务启动之前启动,After和Before字段只涉及启动顺序,不涉及依赖关系。 + +[Service] # 核心区域 +Type=forking # 表示后台运行模式。 +User=nobody # 设置服务运行的用户 +Group=nobody # 设置服务运行的用户组 +KillMode=control-group # 定义systemd如何停止服务 +PIDFile=/usr/local/udptools/pid/udpspeeder-%i.pid # 存放PID的绝对路径 +Restart=no # 定义服务进程退出后,systemd的重启方式,默认是不重启 +ExecStart=/usr/local/udptools/udpspeeder-%i.sh # 服务启动命令,命令需要绝对路径 +PrivateTmp=true # 表示给服务分配独立的临时空间 + +[Install] +WantedBy=multi-user.target # 多用户 \ No newline at end of file diff --git a/udptools.sh b/udptools.sh new file mode 100644 index 0000000..e86bfd7 --- /dev/null +++ b/udptools.sh @@ -0,0 +1,110 @@ +#!/bin/bash +PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin +export PATH +#判断系统 +if [[ -e /etc/debian_version ]]; then + OS=debian + GROUPNAME=nogroup + RCLOCAL='/etc/rc.local' + IPTABLES=`dpkg --get-selections | grep iptables` + elif [[ -e /etc/centos-release || -e /etc/redhat-release ]]; then + OS=centos + GROUPNAME=nobody + RCLOCAL='/etc/rc.d/rc.local' + IPTABLES=`rpm -qa |grep iptables` + else + echo "只支持Debian\Ubuntu\CentOS系统" + exit +fi +#检查依赖IPTABLES +if [ "$IPTABLES" == '' ]; then + if [[ "$OS" = 'debian' ]]; then + apt-get update + apt-get install iptables -y + else + yum install iptables -y + fi +fi + +#判断服务模式 +if pgrep systemd-journal; then + SYSTEMCTL=1 + else + SYSTEMCTL=0 +fi + +echo +echo "Which mode to run this?" +echo "你想运行在什么模式?" +echo " 1) Client(Default) - 客户端(默认)" +echo " 2) Server - 服务端" +read -p "Run Mode(运行模式) [1-2]: " -e -i 1 RUNMODE +case $RUNMODE in + 1) + read -p "Remote Udp2Raw IP(Udp2Raw远程IP): " RIP + echo"" + while [[ ! "$RPORT" =~ [1-65535] ]];do + read -p "Remote Udp2Raw Port(Udp2Raw远程端口): " RPORT + echo"" + done + while [[ ! "$MPORT" =~ [1-65535] ]];do + read -p "Middle Port(Udp2Raw与UDPSpeeder中间端口): " MPORT + CHECKMPORT=`netstat -ntl | grep $MPORT` + if [[ "$CHECKMPORT" != "" ]]; then + MPORT=0 + echo "端口已被占用"; + fi + echo"" + done + while [[ ! "$LPORT" =~ [1-65535] ]];do + read -p "Listen Port(监听给本地其他业务用端口): " LPORT + CHECKLPORT=`netstat -ntl | grep $LPORT` + if [[ "$CHECKLPORT" != "" ]]; then + LPORT=0 + echo "端口已被占用"; + fi + if [ "$LPORT" == "$MPORT" ]; then + LPORT=0 + echo "端口已被占用"; + fi + echo"" + done + ;; + 2) + while [[ ! "$RPORT" =~ [1-65535] ]];do + read -p "Other Server Port(本地其他业务端口): " RPORT + echo"" + done + while [[ ! "$MPORT" =~ [1-65535] ]];do + read -p "Middle Port(Udp2Raw与UDPSpeeder中间端口): " MPORT + CHECKMPORT=`netstat -ntl | grep $MPORT` + if [[ "$CHECKMPORT" != "" ]]; then + MPORT=0 + echo "端口已被占用"; + fi + if [ "$MPORT" == "$RPORT" ]; then + MPORT=0 + echo "端口已被占用"; + fi + echo"" + done + while [[ ! "$LPORT" =~ [1-65535] ]];do + read -p "Udp2Raw Listen Port(监听给远程UDP2RAW用): " LPORT + CHECKLPORT=`netstat -ntl | grep $LPORT` + if [[ "$CHECKLPORT" != "" ]]; then + LPORT=0 + echo "端口已被占用"; + fi + if [ "$LPORT" == "$MPORT" ]; then + LPORT=0 + echo "端口已被占用"; + fi + echo"" + done + ;; +esac + echo $IP + echo $RPORT + echo $MPORT + echo $LPORT + diff --git a/udptools_install.sh b/udptools_install.sh new file mode 100644 index 0000000..0fef700 --- /dev/null +++ b/udptools_install.sh @@ -0,0 +1,88 @@ +#!/bin/bash +PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin +export PATH +UDP2RAW_URL=https://soft.huayizhiyun.com/network/udptools/udp2raw/udp2raw_20190716.tar.gz +UDPSPEEDER_URL=https://soft.huayizhiyun.com/network/udptools/udpspeeder/speederv2_20190121.tar.gz + +#判断系统和决定BIN名 +if [[ `getconf WORD_BIT` = '32' && `getconf LONG_BIT` = '64' ]] ; then + Is_64bit='y' + UDP2RAW_BIN='udp2raw_amd64' + UDPSPEEDER_BIN='speederv2_amd64' + else + Is_64bit='n' + UDP2RAW_BIN='udp2raw_x86' + UDPSPEEDER_BIN='speederv2_x86' +fi +if uname -m | grep -Eqi "arm|aarch64"; then + Is_ARM='y' + UDP2RAW_BIN='udp2raw_arm' + UDPSPEEDER_BIN='speederv2_arm' +fi + +#安装程序 +Get_udp2raw() +{ +#下载并提取相关文件 +if [ ! -d "/usr/local/udptools" ]; then + mkdir /usr/local/udptools +fi +if [ ! -d "/usr/local/udptools/bin" ]; then + mkdir /usr/local/udptools/bin +fi +if [ ! -d "/usr/local/udptools/src" ]; then + mkdir /usr/local/udptools/src +fi +cd /usr/local/udptools/src + +if [ ! -f "/usr/local/udptools/src/$UDP2RAW_BIN" ]; then + if [ ! -f "/usr/local/udptools/src/udp2raw.tar.gz" ]; then + wget -O udp2raw.tar.gz https://soft.huayizhiyun.com/network/udptools/udp2raw/udp2raw_20190716.tar.gz + fi + tar -zxvf udp2raw.tar.gz +fi +if [ ! -f "/usr/local/udptools/src/$UDP2RAW_BIN" ]; then + echo "下载udp2raw失败;" + exit +fi +cp /usr/local/udptools/src/$UDP2RAW_BIN /usr/local/udptools/bin/udp2raw +} + +Get_udpspeeder() +{ +#下载并提取相关文件 +if [ ! -d "/usr/local/udptools" ]; then + mkdir /usr/local/udptools +fi +if [ ! -d "/usr/local/udptools/bin" ]; then + mkdir /usr/local/udptools/bin +fi +if [ ! -d "/usr/local/udptools/src" ]; then + mkdir /usr/local/udptools/src +fi +cd /usr/local/udptools/src +if [ ! -f "/usr/local/udptools/src/$UDPSPEEDER_BIN" ]; then + if [ ! -f "/usr/local/udptools/src/udpspeeder.tar.gz" ]; then + wget -O udpspeeder.tar.gz https://soft.huayizhiyun.com/network/udptools/udpspeeder/speederv2_20190121.tar.gz + fi + tar -zxvf udpspeeder.tar.gz +fi +if [ ! -f "/usr/local/udptools/src/$UDPSPEEDER_BIN" ]; then + echo "下载udpspeeder失败;" + exit +fi +cp /usr/local/udptools/src/$UDPSPEEDER_BIN /usr/local/udptools/bin/udpspeeder +} + +if [ ! -f "/usr/local/udptools/bin/udp2raw" ]; then + Get_udp2raw +fi +if [ ! -f "/usr/local/udptools/bin/udpspeeder" ]; then + Get_udpspeeder +fi +if [ ! -d "/usr/local/udptools/pid" ]; then + mkdir /usr/local/udptools/pid +fi +if [ ! -d "/usr/local/udptools/log" ]; then + mkdir /usr/local/udptools/log +fi \ No newline at end of file