mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
44 lines
1.0 KiB
Bash
Executable File
44 lines
1.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
usage() {
|
|
echo "Usage: $(basename "$0") -p PORT[,PORT...] [-d SECONDS]"
|
|
echo "Example: $(basename "$0") -p 8021,2014 -d 300"
|
|
exit 1
|
|
}
|
|
|
|
# Set default duration
|
|
DURATION=10
|
|
|
|
# Parse arguments
|
|
while getopts "p:d:h" opt; do
|
|
case $opt in
|
|
p) IFS=',' read -r -a PORTS <<< "$OPTARG" ;;
|
|
d) DURATION="$OPTARG" ;;
|
|
*) usage ;;
|
|
esac
|
|
done
|
|
|
|
# Check required arguments
|
|
[[ ${#PORTS[@]} -eq 0 ]] && usage
|
|
|
|
cleanup() {
|
|
sudo tc qdisc del dev lo root 2>/dev/null
|
|
echo "Traffic restored"
|
|
}
|
|
|
|
# Set up cleanup on script exit
|
|
trap cleanup EXIT INT TERM
|
|
|
|
# Block ports
|
|
echo "Blocking ports ${PORTS[*]} for $DURATION seconds..."
|
|
|
|
sudo tc qdisc add dev lo root handle 1: prio
|
|
sudo tc qdisc add dev lo parent 1:3 handle 30: netem loss 100%
|
|
|
|
for port in "${PORTS[@]}"; do
|
|
sudo tc filter add dev lo protocol ip parent 1:0 prio 3 u32 match ip dport "$port" 0xffff flowid 1:3
|
|
sudo tc filter add dev lo protocol ip parent 1:0 prio 3 u32 match ip sport "$port" 0xffff flowid 1:3
|
|
done
|
|
|
|
sleep "$DURATION"
|