MAC, operstate, and VLAN info from `ip -d link show`.
(iface)
| 470 | 'python', 'speedtest_bind.py') |
| 471 | cmd = [sys.executable or 'python3', wrapper, iface, '--json'] |
| 472 | else: |
| 473 | cmd = [exe, '--json'] |
| 474 | res = _run(cmd, timeout=120) |
| 475 | if res['rc'] == 0: |
| 476 | try: |
| 477 | d = json.loads(res['out']) |
| 478 | return {'success': True, **meta, |
| 479 | 'download_mbps': round(d.get('download', 0) / 1e6, 2), |
| 480 | 'upload_mbps': round(d.get('upload', 0) / 1e6, 2), |
| 481 | 'ping_ms': round(d.get('ping', 0), 2), |
| 482 | 'server': (d.get('server') or {}).get('sponsor'), |
| 483 | 'server_location': (d.get('server') or {}).get('name'), |
| 484 | 'isp': (d.get('client') or {}).get('isp')} |
| 485 | except ValueError: |
| 486 | pass |
| 487 | return {'success': False, **meta, 'error': _speedtest_error(res, meta)} |
| 488 | |
| 489 | |
| 490 | # -------------------------------------------------------------------------- |