network boot, monitor, and diagnostic tool
Clone or download
Jeffrey Silverman
Jeffrey Silverman Working on issues 30, 31, and 32
Issue 32 nbmdt fails when creating object applications may be a special case of
issue 29, Circular import.
Issue 31, A missing stanza in the configuration JSON file will cause a KeyError
exception can't be closed until I create some JSON files with deliberately bad
stanzas.
Issue 30, mypy is complaining, is a measure code defect density.
Latest commit af4bad1 Jan 14, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.idea August 18th commit Sep 7, 2018
docs Issue 27 and Issue 28 Jan 11, 2019
samples Somehow, the files on the windows laptop got out of sync with the files Aug 18, 2018
test Working on issues 30, 31, and 32 Jan 14, 2019
.gitignore Somehow, the files on the windows laptop got out of sync with the files Aug 18, 2018
How_to_diagnose_LAN_problems_with_linux_tools.xml Somehow, the files on the windows laptop got out of sync with the files Aug 18, 2018
Internal_design.md Somehow, the files on the windows laptop got out of sync with the files Aug 18, 2018
LICENSE Somehow, the files on the windows laptop got out of sync with the files Aug 18, 2018
README.md Somehow, the files on the windows laptop got out of sync with the files Aug 18, 2018
The_Network_Boot_Monitor_Diagnostic_Tool.html Added a lot of exposition and explanation Jan 2, 2019
application.py Added building a table of processes key'd by PID Sep 25, 2018
class_demo.py Somehow, the files on the windows laptop got out of sync with the files Aug 18, 2018
configuration.py Somehow, the files on the windows laptop got out of sync with the files Aug 18, 2018
constants.py Working on issues 30, 31, and 32 Jan 14, 2019
datalink.py The discover returned None was upsetting to nbmdt.py, so I took out t… Sep 25, 2018
demo_pytest.py August 18th commit Sep 7, 2018
entities.py 2017-07-21 commit Jul 21, 2018
interface.py Working on issues 30, 31, and 32 Jan 14, 2019
layer.py Separating the contents of interface.py into two files Sep 23, 2018
monitor.sh Somehow, the files on the windows laptop got out of sync with the files Aug 18, 2018
nbmdt.ini Somehow, the files on the windows laptop got out of sync with the files Aug 18, 2018
nbmdt.py Working on issues 30, 31, and 32 Jan 14, 2019
nbmdt.sh Somehow, the files on the windows laptop got out of sync with the files Aug 18, 2018
nbmdt_link.py Somehow, the files on the windows laptop got out of sync with the files Aug 18, 2018
network.py Define the IP_COMMAND constant from the configuration file Nov 26, 2018
nominal_test_nbmt_configuration.json Working on issues 30, 31, and 32 Jan 14, 2019
paramiko_poc.py Somehow, the files on the windows laptop got out of sync with the files Aug 18, 2018
physical.py First CLI tests working, detects the --boot and --debug flags Sep 25, 2018
presentation.py Compiles and runs cleanly in smoke test Sep 25, 2018
reliability.py Somehow, the files on the windows laptop got out of sync with the files Aug 18, 2018
routing.py Somehow, the files on the windows laptop got out of sync with the files Aug 18, 2018
sample_ipv4_and_ipv6_connections.txt Somehow, the files on the windows laptop got out of sync with the files Aug 18, 2018
session.py Passes smoke test Sep 25, 2018
smoke_test.sh Close issue 24 Sep 26, 2018
status.py Somehow, the files on the windows laptop got out of sync with the files Aug 18, 2018
stock_name.py Somehow, the files on the windows laptop got out of sync with the files Aug 18, 2018
transport.py Merge remote-tracking branch 'origin/development' into development Aug 19, 2018
unittest_reliability.py Somehow, the files on the windows laptop got out of sync with the files Aug 18, 2018
utilities.py Working on issues 30, 31, and 32 Jan 14, 2019

README.md

nbmdt

network boot, monitor, and diagnostic tool (NBMDT).

This tool will do fault isolation and diagnostics on a linux network. It runs in several different but similar modes:

  • boot. In this mode, NBMDT reads its nominal network configuration file and nominal values of the IP protocol stack, from bottom to top, with a Pass/Fail indication.
    • Verify hardware: cable is connected
    • Verify that all of the network interface cards have proper IPv4 and IPv6 addresses either from DHCP, DHCP6, automatic configuration (IPv6 only), or static configuration.
    • ping the nearby routers and gateway nodes. The routers come from the normal system routing tables.
    • Verify ARP table (IPv4) or neighbor table (IPv6).
    • Verify that DNS is working by querying all of the nameservers listed in /etc/resolv.conf
    • Verify that the remote machines specified by the sysadmin in the persistent configuration file and the nominal configuration file are reachable using the protocol/port specified.
    • Verify that local services are listening on their given ports, as given by the sysadmin in the persistent configuration file and the nominal configuration file
  • monitor. In this mode, NBMDT monitors the network using its predefined configuration and the configuration it has auto-discovered. Each of the tests in boot mode are run, but in no particular sequence, and with frequecy specified by the system administrator in the persistent configuration file
  • monitor. In this mode, NBMDT watches over the network periodically, and alerts on any important change.
  • discovery. In this mode, NBMDT assumes that the network is correct and goes through the auto discovery process. It makes a new nominal configuration file. This file can be compared with an earlier nominal configuration file to see what changed.

The roadmap for MBMDT is:

1 Use a bash script to implement the NBMDT. Output is to a flat ASCII file, and changes are detected using the diff command

2 Use a python program that invokes other programs to examine the state of the network. Output is to a JSON file, and changes are detected using JSON tools

3 Use a python program that reads files in the /proc and /system pseudo file systems to examine the state of the network.

4 Use nagios plugins to do the same things if unavailable by other means.

See also [How to test and repair local area networks using linux tools] by Jeff Silverman

+ Version 1.0: Uses subprocesses and scrapes the outputs to gather information about the networks.  Has the persistent

file, the logging at boot, the diagnostic ability, but not the monitoring or logging + Version 2.0: Queries the operating system for more information, monitoring, and logging. + Version 3.0: Supports nagios plugins, and dependencies.