Giter Site home page Giter Site logo

rolandriegel / nload Goto Github PK

View Code? Open in Web Editor NEW
290.0 9.0 33.0 527 KB

Real-time network traffic monitor

License: GNU General Public License v2.0

Makefile 0.75% Shell 0.13% C++ 96.70% C 0.50% M4 1.92%
network-traffic-monitor network-analysis network-monitoring network-monitor network-graph network traffic-monitoring cpp c-plus-plus c-plusplus

nload's People

Contributors

rolandriegel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nload's Issues

Next release roadmap

First of all, @rolandriegel thank you for such a great monitoring tool!
I've been using it for years, and it made my life so much easier.

I'd like to ask if you have any particular date/feature set for the next release.

The reason I'm asking is because the latest release (0.7.4) has the unfortunate bug (see the screenshot below), which was fixed in 8a93886 "Eliminate flicker on some terminals like rxvt (thanks to Alex Wilson)".
I can always cherry-pick the fix on top of 0.7.4, but it's easier to go with an official release (for distros too).

So, if the next release is expected soon enough, I'll just wait for it.
If not, I'll cherry-pick the patch or use snapshot of master.

Thank you,

image

[Feature request] Support Tera prefix (and maybe even Peta and Exa) with `-U` and `-u`

Hi,

nload currently shows me on a host with just two weeks of uptime:

Ttl: 37505.16 GByte

This should better be displayed like this:

Ttl: 37.50 TByte

Currently -U only supports unit prefixes up to G for "Giga". Adding T for Tera (and maybe even already P for Peta and E for Exa) would be helpful.

And given that there are off-the-shelf 400 GBit/s network interfaces out there, supporting the Tera unit prefix for -u starts to make sense as well.

2018 Changes missing

Hi,

The changes made in 2018 are not yet released on any public repositories, and it would be great to do so.
I'm not sure if this is intentional, or that the version number hasn't been bumped since the 2012 release.

OpenWRT opkg submit build to repository please

Kindly provide a PR to github.com/openwrt/packages in accordance to the OpenWRT build guide(s):

My static make skills are not up to scratch and I struggled with the the proper static linking using an embedded device and OpenWRT that by default lacks a lot of the required ncurses or other dev / lib dependencies.

nload is a great match and would serve well in OpenWRT givens its network centric.

If a PR can be arrange then I dont mind helping to maintain it over time with new releases, etc.

Many thanks in advanced.

PS - also saw #15 after raising this which may be related.

Illegal configuration options are silently ignored

If the configuration file for nload has a bad value, or is in an incorrect format completely, nload silently ignores the errors. It should raise an error instead.

Steps to reproduce:

  1. Write stuff to ~/.nload
  2. Start nload
  3. Observe that nload starts and the invalid configuration is ignored

Add documentation for configuration file format

nload supports a configuration file, but the format and options are not documented.

The keys can be found here:

nload/src/app.cpp

Lines 58 to 100 in 8f92dc0

// create setting infrastructure
SettingStore::add(Setting("AverageWindow", "Window length for average (s)", STANDARD_AVERAGE_WINDOW));
SettingStore::add(Setting("BarMaxIn", "Max Incoming deflection (kBit/s)", STANDARD_MAX_DEFLECTION));
SettingStore::add(Setting("BarMaxOut", "Max Outgoing deflection (kBit/s)", STANDARD_MAX_DEFLECTION));
SettingStore::add(Setting("DataFormat", "Unit for data numbers", STANDARD_DATA_FORMAT));
SettingStore::add(Setting("Devices", "Devices to show", "all"));
SettingStore::add(Setting("MultipleDevices", "Show multiple devices", STANDARD_HIDE_GRAPHS));
SettingStore::add(Setting("RefreshInterval", "Refresh interval (ms)", STANDARD_REFRESH_INTERVAL));
SettingStore::add(Setting("TrafficFormat", "Unit for traffic numbers", STANDARD_TRAFFIC_FORMAT));
SettingStore::get("AverageWindow").pushFilter(new SettingFilterMin(5));
SettingStore::get("BarMaxIn").pushFilter(new SettingFilterAllowValue("0"));
SettingStore::get("BarMaxIn").pushFilter(new SettingFilterMin(10));
SettingStore::get("BarMaxOut").pushFilter(new SettingFilterAllowValue("0"));
SettingStore::get("BarMaxOut").pushFilter(new SettingFilterMin(10));
SettingStore::get("RefreshInterval").pushFilter(new SettingFilterMin(50));
SettingStore::get("Devices").pushFilter(new SettingFilterDefault("all"));
SettingStore::get("Devices").pushFilter(new SettingFilterExclusive("all"));
map<string, string> valueMapping;
valueMapping[toString(false)] = "[ ]";
valueMapping[toString(true)] = "[x]";
SettingStore::get("MultipleDevices").pushFilter(new SettingFilterMap(valueMapping));
valueMapping.clear();
valueMapping[toString(Statistics::humanReadableBit)] = "Human Readable (Bit)";
valueMapping[toString(Statistics::humanReadableByte)] = "Human Readable (Byte)";
valueMapping[toString(Statistics::bit)] = "Bit";
valueMapping[toString(Statistics::byte)] = "Byte";
valueMapping[toString(Statistics::kiloBit)] = "kBit";
valueMapping[toString(Statistics::kiloByte)] = "kByte";
valueMapping[toString(Statistics::megaBit)] = "MBit";
valueMapping[toString(Statistics::megaByte)] = "MByte";
valueMapping[toString(Statistics::gigaBit)] = "GBit";
valueMapping[toString(Statistics::gigaByte)] = "GByte";
SettingStore::get("TrafficFormat").pushFilter(new SettingFilterMap(valueMapping));
SettingStore::get("DataFormat").pushFilter(new SettingFilterMap(valueMapping));
valueMapping.clear();
// load system and user settings
loadSettings();

...and the configuration can be set using an ini format of key = value, but I was only able to learn this from reading the source code.

Auto-scale?

I would like nload to utilize the full height of the scale without setting hard values for -u.

But -u H just produces either a flat graph like so:

image

Or on higher throughput a block like that:

image

Is there way to make it react to current throughput?


Running with fixed unit and interval here: https://ygg.thingylabs.io/

Unable to select some devices on MacOS

I'm trying to run nload on one specific network device but this option seems to ignored with certain devices, showing me all devices instead.

I'm running nload 0.7.4 on MacOS 11.6.7, installed via Homebrew.

This Mac has a lot of network devices. (I'm not sure what they all do). I've tested each one and here are the results:
Working correctly: gif0, stf0, en11, en10, bridge0, awdl0, llw0, utun0, utun1
Not working: lo0, en0, en1, en2 en3, en4, en5, en6, en7, en8, en9, ap1

Running command: nload en0
Output:
Screenshot 2023-07-08 at 10 37 07 AM

After moving over to en0 with the arrow key it shows correct info.
Screenshot 2023-07-08 at 10 37 00 AM

Segmentation fault after closing options window

Every time I close the options window (F2) nload crashes with segmentation fault, regardless of whether or not I changed any options. It happens with all network devices. I'm running version 0.7.4 on MacOS 11.6.7 installed via Homebrew.
I also get the same result on a different Mac running Ventura 13.0.

Screen.Recording.2023-07-08.at.10.57.50.AM.mov

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.