feat: monitor ethernet link speed

This commit is contained in:
way
2026-10-11 00:34:21 +08:00
parent fc27079126
commit 26c313df46
7 changed files with 100 additions and 27 deletions
+15 -6
View File
@@ -31,12 +31,21 @@ fi
# but ignored by the monitor and never exposed as monitor configuration.
python3 - <<'PY'
from pathlib import Path
import configparser
p=Path('/etc/pigway-pi-control.conf');c=configparser.ConfigParser();c.read(p)
with p.open('a') as f:
for section,values in {'device':{'identifier':'auto','name':'auto'},'plugins':{},'api':{'bind':'0.0.0.0','port':'6001','log_limit':'200'}}.items():
if not c.has_section(section):
f.write('\n['+section+']\n'+''.join(k+' = '+v+'\n' for k,v in values.items()))
import configparser,re
p=Path('/etc/pigway-pi-control.conf');text=p.read_text();c=configparser.ConfigParser();c.read_string(text)
for section,values in {'device':{'identifier':'auto','name':'auto'},'plugins':{},
'alerts':{'ethernet_min_speed_mbps':'1000','ethernet_speed_seconds':'15'},
'api':{'bind':'0.0.0.0','port':'6001','log_limit':'200'}}.items():
if not c.has_section(section):
text=text.rstrip()+'\n\n['+section+']\n'+''.join(k+' = '+v+'\n' for k,v in values.items())
else:
missing={k:v for k,v in values.items() if not c.has_option(section,k)}
if missing:
start=re.search(rf'(?mi)^\[{re.escape(section)}\][ \t]*$',text).end()
following=re.search(r'(?m)^\[[^\]\r\n]+\]',text[start:])
end=start+(following.start() if following else len(text)-start)
text=text[:end].rstrip()+'\n'+''.join(k+' = '+v+'\n' for k,v in missing.items())+'\n'+text[end:].lstrip('\n')
p.write_text(text)
PY
if [ ! -s /etc/pigway-pi-control-api.token ]; then
(umask 077; python3 -c 'import secrets; print(secrets.token_urlsafe(32))' > /etc/pigway-pi-control-api.token)