quil-docker/xs.sh
2024-11-26 23:15:56 +08:00

74 lines
2.0 KiB
Bash

#!/bin/bash
# 网络接口名称
INTERFACE="eno1"
# 带宽限制
LIMIT_RATE="2mbit"
# 检查是否提供操作参数
if [ "$#" -lt 1 ]; then
echo "Usage: $0 {add|del}"
exit 1
fi
# 添加限速规则
add_limit() {
echo "Applying new bandwidth limit..."
# 清理旧规则
tc qdisc del dev "$INTERFACE" root 2>/dev/null
tc qdisc del dev ifb0 root 2>/dev/null
# 添加上行规则
tc qdisc add dev "$INTERFACE" root handle 1: htb default 11
tc class add dev "$INTERFACE" parent 1: classid 1:1 htb rate "$LIMIT_RATE"
tc class add dev "$INTERFACE" parent 1:1 classid 1:11 htb rate "$LIMIT_RATE"
tc filter add dev "$INTERFACE" protocol ip parent 1:0 prio 1 u32 match ip dport 8337 0xffff flowid 1:11
tc filter add dev "$INTERFACE" protocol ip parent 1:0 prio 1 u32 match ip dport 8338 0xffff flowid 1:11
# 添加下行规则
tc qdisc add dev ifb0 root handle 1: htb default 11
tc class add dev ifb0 parent 1: classid 1:1 htb rate "$LIMIT_RATE"
tc class add dev ifb0 parent 1:1 classid 1:11 htb rate "$LIMIT_RATE"
tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip sport 8337 0xffff flowid 1:11
tc filter add dev ifb0 protocol ip parent 1:0 prio 1 u32 match ip sport 8338 0xffff flowid 1:11
echo "Bandwidth limit applied successfully."
}
# 删除限速规则
delete_limit() {
echo "Removing bandwidth limit from interface $INTERFACE..."
# 删除上行规则
tc qdisc del dev "$INTERFACE" root
# 删除下行规则
tc qdisc del dev ifb0 root
echo "Bandwidth limit removed successfully."
}
# 根据用户输入执行操作
case "$1" in
add)
# 启用下行流量接口 ifb0
modprobe ifb
ip link set ifb0 up
add_limit
;;
del)
delete_limit
# 禁用下行流量接口 ifb0
ip link set ifb0 down
;;
*)
echo "Invalid option: $1"
echo "Usage: $0 {add|delete}"
exit 1
;;
esac