Shell脚本 (五)

1、开发脚本 管理服务端 LVS

#!/bin/bash 
. /etc/init.d/functions

VIP=192.168.1.66
INTERFACE=ens33
subinterface=${interface}:`echo $vip| cut -d. -f4`
PORT=80
GW=192.168.1.1
RETVAR=0

IP=/sbin/ip
ROUTE=/sbin/route
IPVSADM=/sbin/ipvsadm
ARPING=/sbin/arping

RIPS={
	192.168.1.133
	192.168.1.140
	}

function uasge (){
	echo "Usage : $0 {start|stop|restart}"
	return 1
}

function ipvsStart () {  #配置 ipvs
	$IP addr add $VIP/24 dev ${INTERFACE} label $subinterface      #添加 VIP
	$ROUTE add -host $VIP dev $subinterface       #添加VIP 对应主机路由
	$IPVSADM -C
	$IPVSADM -A -t $VIP:$PORT -s wrr -p 60      #生成 ipvs 实例
	for ((i=0;i<`echo ${#RIPS[*]}`; i++))
	do
	$IPVSADM -a -t $VIP:$PORT -r ${RIPS[$i]}:$PORT -g -w 1    #添加节点
done
RETVAR=$?

#更新 MAC
$ARPING -c 1 -I ${INTERFACE} -s $VIP $GW &>/dev/null    #更新 arp 表
	if [ $RETVAR -eq 0 ]
	then	
		action "Ipvsadm started." /bin/true
	else
		action "Ipvsadm started." /bin/false
	fi
	return $RETVAR
}

function ipvsStop () {       #停止 Ipvs
	$IPVSADM -C 
	$IPVSADM -Z
	$IP addr del $VIP/24 dev ${INTERFACE} label $suninterface &>/dev/null  #删除 VIP 
	RETVAR=$?
	$ROUTE del -host $VIP dev $subinterface &>/dev/null   # 删除路由
	$ARPING -c 1 -I ${INTERFACE} -s $VIP $GW >/dev/null 2>&1    # 更新 arp 表
	if [ $RETVAR -eq 0 ]
		then
			action "Ipvsadm stopped." /bin/true
		else
			action "Ipvsadm stopped." /bin/false
	fi
	return $RETVAR
}

main ()
{
	if [ $# -ne 1 ]; then
		usage $0
	fi
	case "$1" in
		start)
			ipvsStart
			;;
		stop)   ipvsStop
			;;
		restart)
			ipvsStop
			ipvsStart
			;;
	*)
		usage $0
		;;
	esac
}
main $*

2、LVS 节点健康检查及管理脚本

#!/bin/bash 

IPVSADM=/sbin/ipvsadm
vip=192.168.1.66
port=80
RIPS=(
	192.168.1.7
	192.168.1.8
)
while true
do
	for ((i=0;i<${#RIPS[*]};i++))
	do
	port_count=`nmap ${RIPS[$i]} -p $port | grep open | wc -l`   #节点检查,是否正常
	if [ $port_count -ne 1 ];then #如果节点不通
		if [ `$IPVSADM -Ln| grep ${RIPS[$i]} | wc -l` -ne 0 ];then
		# 并且确定没有从池中剔除
		$IPVSADM -d -t $VIP:$port -r ${RIPS[$i]}:$PORT >/dev/null 2>&1
		# 则 剔除 不正常的节点
	fi
	else
		if [ `$IPVSADM -Ln | grep ${RIPS[$i]}| wc -l` -eq 0 ];then
		# 如果节点池中没有 RS
		$IPVSADM -a -t $VIP:$port -r ${RIPS[$i]}:$port >/dev/null 2>&1
		# 则添加对应的节点
		fi
	fi
	done
	sleep 5
done

3、LVS 客户端配置脚本

#!/bin/bash 
RETVAR=0
vip=(
	192.168.1.7
	192.168.1.8
)

. /etc/init.d/functions

case "$1" in
	start)
		for ((i=0; i<`echo ${#vip[*]}`;i++))
	do
		interface="lo:`echo ${vip[$i]}|awk -F . '{print $4}'`"
		/sbin/ip addr add ${vip[$i]}/24 dev lo label $interface
		RETVAR=$?
	done
	echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
	echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
	echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
	echo "2" >/proc/sys/net/ipv4/conf/all/arp_annouce
	if [ $RETVAR -eq 0 ];then
		action "Start LVS config of rearserver."  /bin/true
	else
		action "Start LVS config of rearserver."  /bin/false
	fi
	;;
	stop)
		for ((i=0; i<`echo ${#vip[*]}`;i++))
        do
                interface="lo:`echo ${vip[$i]}|awk -F . '{print $4}'`"
                /sbin/ip addr add ${vip[$i]}/24 dev lo label $interface
                RETVAR=$?
        done
        echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
        echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
        echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
        echo "0" >/proc/sys/net/ipv4/conf/all/arp_annouce
        if [ $RETVAR -eq 0 ];then
                action "Start LVS config of rearserver."  /bin/true
        else
                action "Start LVS config of rearserver."  /bin/false
        fi
        ;;
*)
	echo "Usage: $0 {start|stop}"
	exit 1
esac
exit $RETVAR

4、模拟 keepalived 软件高可用

#!/bin/bash 

vip=192.168.1.66
port=80
ipvs_tools=`rpm -qa ipvsadm| wc -l`
if [ $ipvs_tools -ne 1 ]
        then
                yum install ipvsadm -y
        fi

while true
do
        ping -w2 -c2 ${vip} >/dev/null 2>&1
if [ $? -ne 0 ];then
        /bin/sh ./lvsstart.sh start >/dev/null 2>&1
else    
        /bin/sh ./lvsstart.sh stop >/dev/null 2>&1
fi
sleep 5
done

# 要借助上面的lvs 服务启动的脚本

5、编写 正(长)方形 图形

##  长方形
#!/bin/bash 
read -p "Please enter a number:" Line
for ((i=1;i<=$Line;i++))
do
	for ((m=1;m<=$(($Line+1));m++))
	do
		echo -n "*"
done
for ((h=1;h<=$(($Line-1));h++))
do
	echo -n '*'
done
	echo 
done

## 正方形
#!/bin/bash 
read -p "please input a number:" Line
for ((i=1;i<=$Line;i++))
do
	for ((m=1;m<=$(($Line));m++))
	do
		echo -n " ⚪ "
	done
	echo
done

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值