Advertisement
mar_w

quota

Apr 30th, 2018 (edited)
305
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.20 KB | None | 0 0
  1. cat /etc/firewall.user
  2.  
  3. ### zmien wg wlasnych potrzeb
  4. RULE=LIMIT_200MB
  5. ### zmien MAC1 wg wlasnych potrzeb
  6. MAC1="00:22:33:44:55:66"
  7. ### zmien wartosc wg wlasnych potrzeb
  8. QUOTA=$((200 * 1024 * 1024))
  9.  
  10. PKTS=$(awk '/'$RULE'/{print $2}' /etc/quotas)
  11. BYTES=$(awk '/'$RULE'/{print $3}' /etc/quotas)
  12. IP1=$(awk '/'$MAC1'/{print $2}' /etc/ethers)
  13.  
  14. ### blokada dostepu do routera z limitowanego adresu MAC1
  15. iptables -I input_rule -p tcp -m multiport --dports 22,80,443 -m mac --mac-source $MAC1 -j DROP
  16.  
  17. iptables -N $RULE
  18. iptables -A $RULE -m quota --quota $QUOTA --set-counters $PKTS $BYTES -j ACCEPT
  19. iptables -A $RULE -j REJECT
  20. iptables -A forwarding_rule -j $RULE -s $IP1
  21. iptables -A forwarding_rule -j $RULE -d $IP1
  22.  
  23.  
  24. ------------------------------------------------------------------------------------------------------------------------
  25.  
  26.  
  27. cat /usr/sbin/quotas-backup-test.sh
  28.  
  29. #!/bin/sh
  30. ### to samo co w firewall.user
  31. RULE=LIMIT_200MB
  32. ### zmien wartosc wg wlasnych potrzeb ciutke mniej tak jak radzi Cezary
  33. QUOTA=$((200 * 1023 * 1024))
  34. ### to samo co w firewall.user
  35. MAC1="00:22:33:44:55:66"
  36.  
  37. BACKUP=/etc/quotas
  38.  
  39. # aktualny dzien miesiaca
  40. DM=$(date +%d)
  41. # dzien modyfikacji pliku
  42. DF=$(ls -al $BACKUP | awk '{print $7}')
  43.  
  44. if [ $DM -eq $DF ]; then
  45. echo "PLIK JEST Z AKTUALNEGO DNIA"
  46. else
  47. logger -t QUOTA: "PLIK /etc/quotas JEST Z INNEGO DNIA...TRWA EDYCJA PLIKU I ZEROWANIE LICZNIKOW"
  48. echo "$RULE 0 0" > $BACKUP
  49. iptables -Z $RULE
  50. fi
  51.  
  52. O=$(iptables -vxnL $RULE 2>/dev/null)
  53. PKTS=0
  54. BYTES=0
  55. if [ -n "$O" ]; then
  56.     PKTS=$(iptables -vxnL $RULE | awk '/quota:/{print $1}')
  57.     [ -z "$PKTS" ] && PKTS=0
  58.     BYTES=$(iptables -vxnL $RULE | awk '/quota:/{print $2}')
  59.     [ -z "$BYTES" ] && BYTES=0
  60. fi
  61. FBACKUP=/etc/quotas
  62. touch $FBACKUP
  63. sed -i '/'$RULE'/d' $FBACKUP
  64. echo "$RULE $PKTS $BYTES" >> $FBACKUP
  65.  
  66. if [ $BYTES -gt $QUOTA ]; then
  67.   iptables -t nat -C prerouting_rule -m mac  --mac-source $MAC1 -p tcp --dport 80 -j REDIRECT --to-port 33333 || iptables -t nat -A prerouting_rule -m mac  --mac-source $MAC1 -p tcp --dport 80 -j REDIRECT --to-port 33333
  68. else
  69.  iptables -t nat -D prerouting_rule -m mac  --mac-source $MAC1 -p tcp --dport 80 -j REDIRECT --to-port 33333 > /dev/null 2>&1
  70. fi
  71. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement