parent
cd0218d5b5
commit
e26fd94760
36
socat.sh
36
socat.sh
|
|
@ -98,10 +98,24 @@ remove_from_config() {
|
||||||
sed -i "/^$listen_port /d" "$CONFIG_FILE"
|
sed -i "/^$listen_port /d" "$CONFIG_FILE"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# 检测端口是否占用
|
||||||
|
check_port() {
|
||||||
|
if netstat -tuln | grep -q ":$1 "; then
|
||||||
|
echo -e "${Red}错误: 端口 $1 已被占用${Font}"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
# 配置Socat
|
# 配置Socat
|
||||||
config_socat(){
|
config_socat(){
|
||||||
echo -e "${Green}请输入Socat配置信息!${Font}"
|
echo -e "${Green}请输入Socat配置信息!${Font}"
|
||||||
|
while true; do
|
||||||
read -p "请输入本地端口: " port1
|
read -p "请输入本地端口: " port1
|
||||||
|
if check_port $port1; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
read -p "请输入远程端口: " port2
|
read -p "请输入远程端口: " port2
|
||||||
read -p "请输入远程IP: " socatip
|
read -p "请输入远程IP: " socatip
|
||||||
}
|
}
|
||||||
|
|
@ -110,24 +124,38 @@ config_socat(){
|
||||||
start_socat(){
|
start_socat(){
|
||||||
echo -e "${Green}正在配置Socat...${Font}"
|
echo -e "${Green}正在配置Socat...${Font}"
|
||||||
nohup socat TCP4-LISTEN:${port1},reuseaddr,fork,keepalive,nodelay TCP4:${socatip}:${port2},keepalive,nodelay >> ./socat.log 2>&1 &
|
nohup socat TCP4-LISTEN:${port1},reuseaddr,fork,keepalive,nodelay TCP4:${socatip}:${port2},keepalive,nodelay >> ./socat.log 2>&1 &
|
||||||
|
local pid=$!
|
||||||
|
|
||||||
# 检查是否成功启动
|
|
||||||
sleep 2
|
sleep 2
|
||||||
if pgrep -f "socat.*LISTEN:${port1}.*TCP4:${socatip}:${port2}" > /dev/null; then
|
if kill -0 $pid 2>/dev/null; then
|
||||||
echo -e "${Green}Socat配置成功!${Font}"
|
echo -e "${Green}Socat配置成功! PID: $pid${Font}"
|
||||||
echo -e "${Blue}本地端口: ${port1}${Font}"
|
echo -e "${Blue}本地端口: ${port1}${Font}"
|
||||||
echo -e "${Blue}远程端口: ${port2}${Font}"
|
echo -e "${Blue}远程端口: ${port2}${Font}"
|
||||||
echo -e "${Blue}远程IP: ${socatip}${Font}"
|
echo -e "${Blue}远程IP: ${socatip}${Font}"
|
||||||
echo -e "${Blue}本地服务器IP: ${ip}${Font}"
|
echo -e "${Blue}本地服务器IP: ${ip}${Font}"
|
||||||
|
|
||||||
# 添加到配置文件和开机自启
|
|
||||||
add_to_config
|
add_to_config
|
||||||
add_to_startup
|
add_to_startup
|
||||||
else
|
else
|
||||||
echo -e "${Red}Socat启动失败,请检查配置和系统设置。${Font}"
|
echo -e "${Red}Socat启动失败,请检查配置和系统设置。${Font}"
|
||||||
|
echo "检查 socat.log 文件以获取更多信息。"
|
||||||
|
tail -n 10 ./socat.log
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
configure_firewall() {
|
||||||
|
if [ "${OS}" == "CentOS" ]; then
|
||||||
|
firewall-cmd --zone=public --add-port=${port1}/tcp --permanent
|
||||||
|
firewall-cmd --reload
|
||||||
|
else
|
||||||
|
ufw allow ${port1}/tcp
|
||||||
|
fi
|
||||||
|
echo -e "${Green}已在防火墙中开放端口 ${port1}${Font}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 在 start_socat 函数成功启动后调用
|
||||||
|
configure_firewall
|
||||||
|
|
||||||
# 添加到开机自启
|
# 添加到开机自启
|
||||||
add_to_startup() {
|
add_to_startup() {
|
||||||
rc_local="/etc/rc.local"
|
rc_local="/etc/rc.local"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue