diff --git a/check_netio b/check_netio
index cd012f9d970f5232773894ab8f74e1187dacb603..9b5cc8d5d0bd66c6f274889de3c0c8e0024f0a0c 100755
--- a/check_netio
+++ b/check_netio
@@ -6,19 +6,66 @@
 #
 # ----------------------------------------------------------------------
 # 2020-07-08  v1.0  <axel.hahn@iml.unibe.ch>
+# 2023-08-21  v1.1  <axel.hahn@unibe.ch>      add help; add param -i
 # ======================================================================
 
 
-. `dirname $0`/inc_pluginfunctions
+. $( dirname $0 )/inc_pluginfunctions
+
+export self_APPVERSION=1.1
+
+
+# ----------------------------------------------------------------------
+# FUNCTIONS
+# ----------------------------------------------------------------------
+
+# show help text
+function showHelp(){
+    local _self; _self=$(basename $0)
+cat <<EOF
+$( ph.showImlHelpHeader )
+
+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:
+  $_self [-h] [-i INTERFACE(S)]
+
+OPTIONS:
+  -h               this help
+
+PARAMETERS:
+  -i  INTERFACE    show this interface only. Quote multiple interfaces.
+                   The check returns unknown if an interface does not
+                   exist.
+
+EXAMPLES:
+
+  $_self      show netio of all network interfaces
+  $_self -i "eth0 eth1" 
+                   show netio of given interfaces.
+
+EOF
+}
 
 # ----------------------------------------------------------------------
 # MAIN
 # ----------------------------------------------------------------------
 
+bOptHelp=$( ph.hasParamoption "h" "$@")
+
+if [ $bOptHelp -eq 1 ]; then
+    showHelp
+    exit 0
+fi
 
-tmpfile1=`mktemp`
 tmpfile2=`mktemp`
 
+typeset -i iCountInterfaces
+
 typeset -i iRead=0
 typeset -i iTrans=0
 typeset -i iSpeedRead=0
@@ -26,54 +73,63 @@ typeset -i iSpeedTrans=0
 typeset -i iTotalRead=0
 typeset -i iTotalTrans=0
 
-cat /proc/net/dev | grep -E "(eth|en[ops][0-9]*)" >$tmpfile1
+data=$( cat /proc/net/dev | grep -E "(eth|en[ops][0-9]*)" )
+
+allInterfaces=$( cut -f 1 -d ":" <<< "$data" | tr -d " " )
+sInterface=$(   ph.getValueWithParam "$allInterfaces" "i" "$@")
 
-for myinterface in `cat $tmpfile1 | cut -f 1 -d ":" | tr -d " "`
+iCountInterfaces=$( wc -w <<< "$sInterface" )
+for myinterface in $sInterface
 do
-    echo >>$tmpfile2
-    echo "--- $myinterface" >> $tmpfile2
-    line=`grep "${myinterface}\:" $tmpfile1` 
-    # echo "SOURCE: $line" >> $tmpfile2
+    echo >>"$tmpfile2"
+    echo "--- ${myinterface}:" >> "$tmpfile2"
+    line=$( grep "${myinterface}:" <<< "$data" )
+    if [ -n "$line" ] ; then
 
-    # total value of byte
-    iRead=`echo $line | awk '{ print $2 }'`
-    iTrans=`echo $line | awk '{ print $10 }'`
+        # echo "SOURCE: $line" >> $tmpfile2
 
-    # speed in byte per sec based on last stored value and its age
-    iSpeedRead=` ph.perfdeltaspeed "netio-${myinterface}-rx" $iRead`
-    iSpeedTrans=`ph.perfdeltaspeed "netio-${myinterface}-tx" $iTrans`
+        # total value of byte
+        iRead=$( echo "$line" | awk '{ print $2 }')
+        iTrans=$(echo "$line" | awk '{ print $10 }')
 
-    # echo " > receive : $iRead .. $iSpeedRead byte/s"   >> $tmpfile2
-    # echo " > transmit: $iTrans .. $iSpeedTrans byte/s" >> $tmpfile2
+        # speed in byte per sec based on last stored value and its age
+        iSpeedRead=$( ph.perfdeltaspeed "netio-${myinterface}-rx" $iRead)
+        iSpeedTrans=$(ph.perfdeltaspeed "netio-${myinterface}-tx" $iTrans)
 
-    printf "%15s %15s %10s %-10s \n"  "receive:"   $iRead  $iSpeedRead  "byte/s" >> $tmpfile2
-    printf "%15s %15s %10s %-10s \n"  "transmit:"  $iTrans $iSpeedTrans "byte/s" >> $tmpfile2
+        printf "%15s %15s %10s %-10s \n"  "receive:"   $iRead  $iSpeedRead  "byte/s" >> "$tmpfile2"
+        printf "%15s %15s %10s %-10s \n"  "transmit:"  $iTrans $iSpeedTrans "byte/s" >> "$tmpfile2"
 
-    # to store data for each interface
-    # mylabel=`echo $line | awk '{ print $1 }' | tr [:upper:] [:lower:]`
-    # ph.perfadd "${myinterface}-rx"   "$iSpeedRead"
-    # ph.perfadd "${myinterface}-tx"   "$iSpeedTrans"
+        # to store data for each interface
+        if [ $iCountInterfaces -gt 1 ]; then
+            ph.perfadd "rx-${myinterface}"   "$iSpeedRead"
+            ph.perfadd "tx-${myinterface}"   "$iSpeedTrans"
+        fi
+
+        iTotalRead=$iTotalRead+$iSpeedRead
+        iTotalTrans=$iTotalTrans+$iSpeedTrans
+    else
+        ph.setStatus "unknown"
+        echo "UNKNOWN: the interface ${myinterface} does not exist." >> "$tmpfile2"
+    fi
 
-    iTotalRead=$iTotalRead+$iSpeedRead
-    iTotalTrans=$iTotalTrans+$iSpeedTrans
 done
 
-echo "" >> $tmpfile2
-echo "--- total:" >> $tmpfile2
-# echo " > receive : $iTotalRead byte/s"  >> $tmpfile2
-# echo " > transmit: $iTotalTrans byte/s" >> $tmpfile2
-printf "%15s %10s %-10s \n"  "receive:"   $iTotalRead  "byte/s" >> $tmpfile2
-printf "%15s %10s %-10s \n"  "transmit:"  $iTotalTrans "byte/s" >> $tmpfile2
+echo "" >> "$tmpfile2"
+
+if [ $iCountInterfaces -gt 1 ]; then
+    echo "--- total:"
+    printf "%15s %10s %-10s \n"  "receive:"   $iTotalRead  "byte/s"
+    printf "%15s %10s %-10s \n"  "transmit:"  $iTotalTrans "byte/s"
+fi >> "$tmpfile2"
 
 ph.perfadd "rx"   "$iTotalRead"
 ph.perfadd "tx"   "$iTotalTrans"
 
-ph.status "Network IO ... IN `ph.toUnit $iTotalRead M` MB/s >> [host] >> `ph.toUnit $iTotalTrans M` MB/s OUT"
+ph.status "Network IO ... IN $(ph.toUnit $iTotalRead M) MB/s >> [host] >> $(ph.toUnit $iTotalTrans M) MB/s OUT"
 
-# cat $tmpfile1
-cat $tmpfile2
+cat "$tmpfile2"
 
-rm -f $tmpfile1 $tmpfile2
+rm -f "$tmpfile2"
 
 ph.exit
 
diff --git a/docs/20_Checks/_index.md b/docs/20_Checks/_index.md
index 547b3ac5fee81bf473db066fc0f7d85719e941aa..335c6c67b6a58caf20804c3f62d82ecbca9929a5 100644
--- a/docs/20_Checks/_index.md
+++ b/docs/20_Checks/_index.md
@@ -26,7 +26,7 @@ There is one include script used by all checks:
 * [check_haproxy_status](check_haproxy_status.md)
 * [check_memory](check_memory.md)
 * [check_mysqlserver](check_mysqlserver.md)
-* check_netio
+* [check_netio](check_netio.md)
 * [check_netstat](check_netstat.md)
 * [check_onehost](check_onehost.md)
 * [check_onevm](check_onevm.md)
diff --git a/docs/20_Checks/check_netio.md b/docs/20_Checks/check_netio.md
new file mode 100644
index 0000000000000000000000000000000000000000..fc1826e59862cc9fa24f4910e9922dad251d3ccb
--- /dev/null
+++ b/docs/20_Checks/check_netio.md
@@ -0,0 +1,83 @@
+# check_netio
+
+## Introduction
+
+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
+
+## Syntax
+
+```text
+> ./check_netio -h
+______________________________________________________________________
+
+CHECK_NETIO
+v1.1
+
+(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:
+  -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.
+
+```
+
+## 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
+UNKNOWN: Network IO ... IN 0 MB/s >> [host] >> 0 MB/s OUT
+
+--- whatever:
+UNKNOWN: the interface whatever does not exist.
+
+ |rx=0;; tx=0;;
+ ```