Я выполняю этот скрипт, где acl запускается после 300 пакетов, а пакеты блокируются с 10.0.0.1 по 10.0.0.2. Потом жду 10 сек и снова разрешу трафик с 10.0.0.1 до 10.0.0.2. Но проблема в том, что счетчик не сбрасывается, он все еще равен 300. Могу ли я сбросить этот счет, скажем, ноль, чтобы трафик был разрешен с 10.0.0.1 до 10.0.0.2.
import requests
import time
from requests.auth import HTTPBasicAuth
ONOS_REST_API = "http://172.17.0.2:8181/onos/v1"
ONOS_USER = "onos"
ONOS_PASSWORD = "rocks"
SWITCH = "of%3A0000000000000001"
SWITCH_PORT = "1"
PACKET_RESET = 100 # substract this to atual stats
PACKET_TO_TRIGGER_ACL = 400
counter= 1
def get_packet_count():
my_url = "%s/statistics/ports/%s/%s" % (ONOS_REST_API, SWITCH, SWITCH_PORT)
print my_url
req = requests.get(my_url, auth=HTTPBasicAuth(ONOS_USER, ONOS_PASSWORD))
print req.text, req.status_code
return req.json()["statistics"][0]["ports"][0]["packetsReceived"]-PACKET_RESET
def set_acl():
requests.post("%s/acl/rules" % (ONOS_REST_API), json={"srcIp":"10.0.0.1/32", "dstIp":"10.0.0.2/32", "action": "deny"}, auth=HTTPBasicAuth(ONOS_USER, ONOS_PASSWORD))
counter= 0
def set_allowacl():
requests.post("%s/acl/rules" % (ONOS_REST_API), json={"srcIp":"10.0.0.1/32", "dstIp":"10.0.0.2/32", "action": "allow"}, auth=HTTPBasicAuth(ONOS_USER, ONOS_PASSWORD))
counter= 1
if __name__ == "__main__":
while True:
# Check port packet count
packets = get_packet_count()
print("Counter= ",counter)
if packets >= PACKET_TO_TRIGGER_ACL:
#if(counter==1):
set_acl()
time.sleep(10)
set_allowacl()
time.sleep(1)