diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2025-07-12 18:15:32 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2025-07-12 18:15:32 +0800 |
| commit | 299bf0bae8be6ab505f97d6aba4f82e4e6f96f62 (patch) | |
| tree | e1a72a68b5c2fae7fab097a80462233878a3231c /utils/networkUsage.js | |
| parent | ce5f49a9324bceccab821c1d2ebf3f72bdfc09ea (diff) | |
lot of minor improvement added utils and working networkusage
Diffstat (limited to 'utils/networkUsage.js')
| -rw-r--r-- | utils/networkUsage.js | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/utils/networkUsage.js b/utils/networkUsage.js new file mode 100644 index 0000000..a7131f2 --- /dev/null +++ b/utils/networkUsage.js @@ -0,0 +1,41 @@ +function defaultInterface(route) { + var lines = route.split(/\r?\n/) + for (var i = 0; i < lines.length; i++) { + var l = lines[i] + if (l.indexOf("default via") === 0) return l.split(/\s+/)[4] + } + throw "No default interface" +} +function getRxTxBytes(dev, iface) { + var lines = dev.split(/\r?\n/) + for (var i = 0; i < lines.length; i++) { + var l = lines[i].trim() + if (!l.startsWith(iface + ":")) continue + var p = l.split(/\s+/) + return { rx: parseInt(p[1]), tx: parseInt(p[9]) } + } + throw "Interface not found" +} +function formatSize(size, unit) { + const labels = ["B", "K", "M", "G", "T"] + let power = 0, kilo = 2 ** 10 + while (size > kilo && power < labels.length - 1) { + size /= kilo; power++ + } + if (unit) { + return labels[power] + } else { + return size.toFixed(0) + } +} + +// const iface = defaultInterface() +// let prev = getRxTxBytes(iface) + +// setInterval(() => { +// const cur = getRxTxBytes(iface) +// const dr = (cur.rx - prev.rx) / (interval / 1000) +// const dt = (cur.tx - prev.tx) / (interval / 1000) +// prev = cur +// console.log(formatSize(dr), formatSize(dt)) +// }, interval) |
