沒找到類似解決方案,自己寫了個腳本切換。
#!/bin/bash
#By: 不浮不躁 2021-04-07
#傳參提示
if [ ! -n "$1" ] || [ ! -n "$2" ] || [ ! -n "$3" ] || [ ! -n "$4" ];then
echo "錯誤:"
echo "樣例使用:sh $0 "nginx文件絕對路徑" "upstream名字" "server的ip" "起/停" "
echo "樣例使用:sh $0 "/etc/nginx/conf.d/test.conf" "dapp" "192.168.92.181" "up" "
exit 1
fi
Conf=$1
Upstream=$2
Ip=$3
Cmd=$4
Tmp=`cat -n $Conf`
#獲取upstream段開頭
Str=`echo "$Tmp" | grep $Upstream |grep upstream`
#獲取upstream段,”}“結尾
Tmp=`echo "$Tmp" | sed -n "/$Str/,/}/p"`
#echo "$Tmp"
#獲取ip所在行
Line=`echo "$Tmp" | grep $Ip | awk '{print $1}'`
#echo $Line
if [ -z "$Line" ]; then
echo "未獲取到指定代理IP"
exit 1
fi
#判斷是否注釋
Status=`echo "$Tmp" | grep $Ip | awk '{print $2}' | grep ^# `
#echo $Status
if [ -z "$Status" ]; then
Status="未注釋"
echo $Status
echo "$Tmp"
#sed -i "$Line,$Line s/^/#/g" $Conf
else
Status="已注釋"
echo $Status
echo "$Tmp"
fi
#取消注釋
if [ "$Cmd" == "up" ] && [ $Status == "已注釋" ]; then
sed -i "$Line,$Line s/#//g" $Conf
Tmp=`cat -n $Conf`
#獲取upstream段開頭
Str=`echo "$Tmp" | grep $Upstream |grep upstream`
#獲取upstream段,”}“結尾
Tmp=`echo "$Tmp" | sed -n "/$Str/,/}/p"`
echo "$Tmp"
fi
#注釋
if [ "$Cmd" == "down" ] && [ $Status == "未注釋" ]; then
sed -i "$Line,$Line s/^/#/g" $Conf
Tmp=`cat -n $Conf`
#獲取upstream段開頭
Str=`echo "$Tmp" | grep $Upstream |grep upstream`
#獲取upstream段,”}“結尾
Tmp=`echo "$Tmp" | sed -n "/$Str/,/}/p"`
echo "$Tmp"
fi
使用方式:sh 腳本名 "配置文件絕對路徑" "upstream名" "服務ip" "up或down"
使用方式:sh $0 "/etc/nginx/conf.d/test.conf" "dapp" "192.168.92.181" "up"
可做自動切換部署方案,好用請點贊。轉發需保留出處!!!
