init: workspace opencode sync
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
import librouteros
|
||||
|
||||
api = librouteros.connect('192.168.100.2', 'mi4', 'm14', port=8728)
|
||||
|
||||
schedulers = ["Bulanan2", "Bulanan4", "vc-2K3J", "vc-5K10J", "Family", "DevB2"]
|
||||
|
||||
for name in schedulers:
|
||||
items = list(api('/system/scheduler/print', **{'?name': name}))
|
||||
if not items:
|
||||
print(f"{name}: not found")
|
||||
continue
|
||||
|
||||
item = items[0]
|
||||
oe = item['on-event']
|
||||
|
||||
if ':pic' not in oe:
|
||||
print(f"{name}: already fixed")
|
||||
continue
|
||||
|
||||
fixed = oe.replace(':pic', ':pick')
|
||||
count = oe.count(':pic')
|
||||
|
||||
# Try set with kwargs (word=value syntax)
|
||||
try:
|
||||
api('/system/scheduler/set', '.id=' + item['.id'], 'on-event=' + fixed)
|
||||
print(f"{name}: set OK (fixed {count})")
|
||||
except Exception as e:
|
||||
print(f"{name}: ERROR - {e}")
|
||||
# Try alt approach: set disabled and on-event separately
|
||||
try:
|
||||
api('/system/scheduler/set', '.id=' + item['.id'], 'on-event=' + fixed)
|
||||
except Exception as e2:
|
||||
print(f"{name}: alt also failed - {e2}")
|
||||
|
||||
# Verify
|
||||
print("\n=== Verification ===")
|
||||
all_ok = True
|
||||
for item in list(api('/system/scheduler/print')):
|
||||
name = item['name']
|
||||
oe = item.get('on-event', '')
|
||||
if ':pic' in oe:
|
||||
print(f" STILL BROKEN: {name}")
|
||||
all_ok = False
|
||||
else:
|
||||
print(f" OK: {name}")
|
||||
if all_ok:
|
||||
print(" ALL SCHEDULERS FIXED!")
|
||||
|
||||
# Fix profile on-login
|
||||
print("\n=== Fixing profile on-login ===")
|
||||
for item in list(api('/ip/hotspot/user/profile/print')):
|
||||
name = item['name']
|
||||
ol = item.get('on-login', '')
|
||||
if ':pic' not in ol:
|
||||
print(f"{name}: already fixed")
|
||||
continue
|
||||
fixed = ol.replace(':pic', ':pick')
|
||||
count = ol.count(':pic')
|
||||
try:
|
||||
api('/ip/hotspot/user/profile/set', '.id=' + item['.id'], 'on-login=' + fixed)
|
||||
print(f"{name}: fixed {count}")
|
||||
except Exception as e:
|
||||
print(f"{name}: ERROR - {e}")
|
||||
|
||||
# Verify profiles
|
||||
print("\n=== Profile Verification ===")
|
||||
all_ok = True
|
||||
for item in list(api('/ip/hotspot/user/profile/print')):
|
||||
name = item['name']
|
||||
ol = item.get('on-login', '')
|
||||
if ':pic' in ol:
|
||||
print(f" STILL BROKEN: {name} (on-login)")
|
||||
all_ok = False
|
||||
if all_ok:
|
||||
print(" ALL PROFILES FIXED!")
|
||||
|
||||
api.close()
|
||||
Reference in New Issue
Block a user