## Check_netio

Script: `check_netio`

Show network io for all or selected interfaces.

This plugin scans `/proc/net/dev` with the regex `eth|en[ops][0-9]*` to show a few types of interfaces.

## Requirements

* none

## Standalone installation

From this repository ypu need next to this script:

* `inc_pluginfunctions` shared function for all IML checks written in bash

## Syntax

```text
______________________________________________________________________

CHECK_NETIO
v1.7

(c) Institute for Medical Education - University of Bern
Licence: GNU GPL 3

https://os-docs.iml.unibe.ch/icinga-checks/Checks/check_netio.html
______________________________________________________________________

Show network io for all or selected interfaces.
It shows the current counter value from /proc/net/dev and the speed 
in byte per sec since last execution.

This plugin sends performancedata.

SYNTAX:
  check_netio [-h] [-i INTERFACE(S)]

OPTIONS:
  -h               this help

PARAMETERS:

  -f  REGEX        filter interfaces by given regex.
  -r  REGEX        remove interfaces by given regex

  -i  INTERFACE    show this interface only. Quote multiple interfaces.
                   The check returns unknown if an interface does not
                   exist.

EXAMPLES:

  check_netio      show netio of all network interfaces
  check_netio -i "eth0 eth1" 
                   show netio of given interfaces.

  check_netio -f "^eth" 
                   show netio of interfaces beginning with "eth"

  check_netio -f "^eth" -r "eth2"
                   show netio of interfaces matching "^eth" but not "eth2"

  check_netio -f "^(enp|wlp)"
                   Example to include multiple interface names: use brackets
                   and divide expressions with pipe sign.

```

## Examples

### Host with single interface

A simple call on a host with a single interface... `check_netio` returns

```txt
OK: Network IO ... IN 0 MB/s >> [host] >> 0 MB/s OUT

--- enp0s31f6:
       receive:      1079156830      28849 byte/s     
      transmit:      1082596810       2898 byte/s     

 |rx=28849;; tx=2898;;
 ```

### Custom interface

You get the same output with `check_netio -i enp0s31f6`.

If you enter a wrong interface the check returns with "UNKNOWN".
`check_netio -i "whatever"`returns

```txt
ERROR: the interface [whatever] does not exist.
```

### Filter interface list

The parameter `-f` is followes by pattern that an interface must match.
The opposite does the regexp behind `-r`: it removes interfaces that match that regex.

You can combine both parameters.

The regexp can be an extended regexp (`grep -E <pattern>`). This allows to use brackets and divide expressions with pipe sign, eg. `check_netio -f "^(enp|wlp)"`

If your filter rules remove all existing interfaces you get an error message:

```txt
ERROR: No interface was found.
```