diff --git a/intall.sh b/intall.sh new file mode 100644 index 0000000..d8f9b55 --- /dev/null +++ b/intall.sh @@ -0,0 +1,160 @@ +#! /bin/bash +PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin +export PATH + +Green="\033[32m" +Font="\033[0m" +Blue="\033[33m" + +function rootness(){ + if [[ $EUID -ne 0 ]]; then + echo "Error:This script must be run as root!" 1>&2 + exit 1 + fi +} + +function checkos(){ + if [[ -f /etc/redhat-release ]];then + OS=CentOS + elif cat /etc/issue | grep -q -E -i "debian";then + OS=Debian + elif cat /etc/issue | grep -q -E -i "ubuntu";then + OS=Ubuntu + elif cat /etc/issue | grep -q -E -i "centos|red hat|redhat";then + OS=CentOS + elif cat /proc/version | grep -q -E -i "debian";then + OS=Debian + elif cat /proc/version | grep -q -E -i "ubuntu";then + OS=Ubuntu + elif cat /proc/version | grep -q -E -i "centos|red hat|redhat";then + OS=CentOS + else + echo "Not supported OS, Please reinstall OS and try again." + exit 1 + fi +} + +function disable_selinux(){ + if [ -s /etc/selinux/config ] && grep 'SELINUX=enforcing' /etc/selinux/config; then + sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config + setenforce 0 + fi +} + +get_ip(){ + ip=`curl http://whatismyip.akamai.com` +} + +config_socat(){ + echo -e "${Green}请输入Socat配置信息!${Font}" + read -p "请输入本地端口:" port1 + read -p "请输入远程端口:" port2 + read -p "请输入远程IP:" socatip +} + +start_socat(){ + echo -e "${Green}正在配置Socat...${Font}" + nohup socat TCP4-LISTEN:${port1},reuseaddr,fork TCP4:${socatip}:${port2} >> /root/socat.log 2>&1 & + nohup socat -T 600 UDP4-LISTEN:${port1},reuseaddr,fork UDP4:${socatip}:${port2} >> /root/socat.log 2>&1 & + if [ "${OS}" == 'CentOS' ];then + sed -i '/exit/d' /etc/rc.d/rc.local + echo "nohup socat TCP4-LISTEN:${port1},reuseaddr,fork TCP4:${socatip}:${port2} >> /root/socat.log 2>&1 & + nohup socat -T 600 UDP4-LISTEN:${port1},reuseaddr,fork UDP4:${socatip}:${port2} >> /root/socat.log 2>&1 & + " >> /etc/rc.d/rc.local + chmod +x /etc/rc.d/rc.local + else + source /etc/os-release &>/dev/null + if [[ "${ID}" == "debian" && ${VERSION_ID} -ge 9 ]];then + echo "[Unit] + Description=/etc/rc.local + ConditionPathExists=/etc/rc.local + + [Service] + Type=forking + ExecStart=/etc/rc.local start + TimeoutSec=0 + StandardOutput=tty + RemainAfterExit=yes + SysVStartPriority=99 + + [Install] + WantedBy=multi-user.target + " > /etc/systemd/system/rc-local.service + echo "#!/bin/sh -e + # + # rc.local + # + # This script is executed at the end of each multiuser runlevel. + # Make sure that the script will "exit 0" on success or any other + # value on error. + # + # In order to enable or disable this script just change the execution + # bits. + # + # By default this script does nothing. + " > /etc/rc.local + echo "nohup socat TCP4-LISTEN:${port1},reuseaddr,fork TCP4:${socatip}:${port2} >> /root/socat.log 2>&1 & + nohup socat -T 600 UDP4-LISTEN:${port1},reuseaddr,fork UDP4:${socatip}:${port2} >> /root/socat.log 2>&1 & + " >> /etc/rc.local + chmod +x /etc/rc.local + systemctl enable rc-local >/dev/null 2>&1 + systemctl start rc-local >/dev/null 2>&1 + else + sed -i '/exit/d' /etc/rc.local + echo "nohup socat TCP4-LISTEN:${port1},reuseaddr,fork TCP4:${socatip}:${port2} >> /root/socat.log 2>&1 & + nohup socat -T 600 UDP4-LISTEN:${port1},reuseaddr,fork UDP4:${socatip}:${port2} >> /root/socat.log 2>&1 & + " >> /etc/rc.local + chmod +x /etc/rc.local + fi + fi + systemctl stop firewalld.service >/dev/null 2>&1 + systemctl disable firewalld.service >/dev/null 2>&1 + service iptables stop >/dev/null 2>&1 + chkconfig iptables off >/dev/null 2>&1 + get_ip + sleep 3 + echo + echo -e "${Green}Socat安装并配置成功!${Font}" + echo -e "${Blue}你的本地端口为: ${port1}${Font}" + echo -e "${Blue}你的远程端口为: ${port2}${Font}" + echo -e "${Blue}你的本地服务器IP为: ${ip}${Font}" + exit 0 +} + +install_socat(){ + echo -e "${Green}即将安装Socat...${Font}" + if [ "${OS}" == 'CentOS' ];then + yum install -y socat + else + apt-get -y update + apt-get install -y socat + fi + if [ -s /usr/bin/socat ]; then + echo -e "${Green}Socat安装完成!${Font}" + fi +} + +function status_socat(){ + if [ -s /usr/bin/socat ]; then + echo -e "${Green}检测到Socat已存在,并跳过安装步骤!${Font}" + main_x + else + main_y + fi +} + +main_x(){ +config_socat +start_socat +} + +main_y(){ +install_socat +config_socat +start_socat +} + +checkos; +rootness; +disable_selinux; +status_socat;