# 🫒Using OliveTin to Provide a Dashboard for Debian🐧

I have created a dashboard using Olive Tin which can be downloaded from github:

%[https://github.com/OliveTin/OliveTin] 

Its in the list of tools that I use:

%[https://hubandspoke.amastelek.com/tools] 

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1721115940526/569efdd7-e064-4886-899b-20422a1b6a07.png align="center")

Here is my example configuration file for OliveTin:

```plaintext
listenAddressSingleHTTPFrontend: 0.0.0.0:1337
pageTitle: Fusion Edge Panel
showFooter: false

# Choose from INFO (default), WARN and DEBUG
logLevel: "INFO"

actions:

  - title: Node Information
    shell: fastfetch -c /etc/fastfetch/fusion.jsonc --pipe false
    icon: "&#128680;"
    popupOnStart: execution-dialog-stdout-only

  - title: Node IP Addresses
    shell: displayedgeIPs.sh
    icon: "&#128218;"
    popupOnStart: execution-dialog-stdout-only


  - title: Test the Internet
    shell: TERM=xterm prettyping --last 20 --rttmin 1 --rttmax 40 -c 60 1.1.1.1
    icon: "&#129760;"
    popupOnStart: execution-dialog

  - title: Check disk space
    icon: disk
    shell: df -h /media
    popupOnStart: execution-dialog-stdout-only

  - title: check console logs
    shell: dmesg | tail
    icon: logs
    popupOnStart: execution-dialog

  - title: Display Bonding Logs
    shell: timeout 5s bondlog -f -n 100
    icon: "&#129717;"
    timeout: 10
    popupOnStart: execution-dialog-stdout-only

  - title: Display Netify Agent
    shell: netifyd -s
    icon: "&#129349;"
    popupOnStart: execution-dialog-stdout-only

  - title: Ping host
    shell: ping {{ host }} -c {{ count }}
    icon: ping
    timeout: 100
    popupOnStart: execution-dialog-stdout-only
    arguments:
      - name: host
        title: Host
        type: ascii_identifier
        default: example.com
        description: The host that you want to ping

      - name: count
        title: Count
        type: int
        default: 3
        description: How many times to do you want to ping?

  - title: Start the Remote Access for eports
    shell: systemctl eport@client1 stop
    icon: "&#128640;"
    popupOnStart: execution-dialog-stdout-only

  - title: Stop the Remote Access for eports
    shell: systemctl eport@client1 stop
    icon: "&#128721;"
    popupOnStart: execution-dialog-stdout-only

  - title: Speedtest on Node
    shell: speedtest --simple --share 
    icon: "&#127939;"
    popupOnStart: execution-dialog

  - title: Speedtest on WAN interface
    shell: speedtest --simple --share -a {{ WAN }}
    icon: "&#127939;"
    popupOnStart: execution-dialog-stdout-only
    arguments:
      - name: WAN
        title: WAN interface
        type: ascii_identifier
        description: Select appropriate interface.
        choices:
        - title: WAN1
          value: eth1
        - title: WAN2
          value: eth2
        - title: WAN3
          value: eth3

  - title: MTR on Node
    shell: mtr -r 1.1.1.1
    icon: "&#128119;"
    popupOnStart: execution-dialog

  - title: MTR on WAN Interface
    shell:  mtr -T -r -a mtr -a $(ip -4 addr show {{ WAN }} | grep -oP '(?<=inet\s)\d+(\.\d+){3}') {{ target }}
    icon: "&#128119;"
    popupOnStart: execution-dialog-stdout-only
    arguments:
      - name: target
        title: Target IP
        type: ascii_identifier
        default: 1.1.1.1
        description: The target IP address

      - name: WAN
        title: WAN interface
        type: ascii_identifier
        description: Select appropriate interface.
        choices:
        - title: WAN1
          value: eth1
        - title: WAN2
          value: eth2
        - title: WAN3
          value: eth3

  - title: Test DNS on Connected IP
    shell: dig @$(ip -4 addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | sed -n '2p') {{ dhost }}
    icon: "&#129495;"
    popupOnStart: execution-dialog
    arguments:
      - name: dhost
        title: Target DNS name
        type: ascii_identifier
        default: fusionsdwan.co.za
        description: The target DNS name

  - title: Show IP Neighbors (Phones, APs, switches, routers, etc.)
    shell: lldpcli show neighbors summary
    icon: "&#128679;"
    popupOnStart: execution-dialog

  - title: Nmap scan of the LAN
    shell: nmap -sn $(ip -4 addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}/\d+' | sed -n '2p' | awk -F'[/.]' '{printf "%d.%d.%d.0/%d\n", $1, $2, $3, $5}')
    icon: "&#128083;"
    popupOnStart: execution-dialog

  - title: Nmap scan of a host
    shell: nmap -sV --script=smb* fusionsdwan.co.za {{ nhost }}
    icon: "&#129659;"
    popupOnStart: execution-dialog
    arguments:
      - name: nhost
        title: Target for scan
        type: ascii_identifier
        default: 8.8.8.8
        description: IP address (or subnet)

  - title: Devices connected on LAN
    shell: arp-scan -I eth0 $(ip -4 addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}/\d+' | sed -n '2p' | awk -F'[/.]' '{printf "%d.%d.%d.0/%d\n", $1, $2, $3, $5}')
    icon: "&#129399;"
    popupOnStart: execution-dialog-stdout-only
```

Here OliveTin displays the result from the [fastfetch](https://github.com/fastfetch-cli/fastfetch) tool:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1719465939966/5b2eb0fb-6b89-4311-b4d9-04c1550e6a65.png align="center")

The configuration file used for fastfetch is:

```plaintext
{
    "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
    "logo": {
        "padding": {
            "top": 2
        }
    },
    "modules": [
        "title",
        "separator",
        "os",
        "host",
        "bios",
        "bootmgr",
        "board",
        "chassis",
        "kernel",
        "initsystem",
        "uptime",
        "loadavg",
        "processes",
        "packages",
        "lm",
        "de",
        "wm",
        {
            "type": "cpu",
            "showPeCoreCount": true,
            "temp": true
        },
        "cpucache",
        "cpuusage",
        "memory",
        "physicalmemory",
        "swap",
        "disk",
        "battery",
        "poweradapter",
        "player",
        "media",
        "publicip",
        {
            "type": "localip",
            "showMac": true
        },
        "wifi",
        "datetime",
        "locale",
        "vulkan",
        "opengl",
        "opencl",
        "users",
        "bluetooth",
        "sound",
        "camera",
        "gamepad",
        {
          "type": "weather",
          "timeout": 1000
        },
        "netio",
        "diskio",
        {
            "type": "physicaldisk",
            "temp": true
        },
        "version",
        "break",
        "colors"
    ]
}
```

The fastfetch binary used for Debian Buster is:

👉 [https://github.com/fastfetch-cli/fastfetch/releases/download/2.16.0/fastfetch-linux-amd64.tar.gz](https://github.com/fastfetch-cli/fastfetch/releases/download/2.16.0/fastfetch-linux-amd64.tar.gz)

fastfetch is a replacement of neofetch which is a great tool but it has been sunsetted hence the use of fastfetch.

Here are the IPs on the device:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1719466418958/d1d56bf4-6d96-4e42-bbf4-1a56dd3b05b9.png align="center")

The command to display that is too long so a script is used:

```plaintext
#!/bin/bash
echo "WAN1 IP Address: $(ip -4 addr show eth1 | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | head -1)"; echo "WAN2 IP Address: $(ip -4 addr show eth2 | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | head -1)"; echo "WAN3 IP Address: $(ip -4 addr show eth3 | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | head -1)"; echo "LAN Local: $(ip -4 addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | head -1)"; echo "LAN Gateway: $(ip -4 addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | sed -n '2p')"; echo "Public IP Address: $(curl -s ifconfig.me)"
```

This is a one minute test to the Internet and this case I'm using Cloudflare's 1.1.1.1 as the target. The tool being used is [prettyping](https://github.com/denilsonsa/prettyping), which provides the same look and feels as the extended ping of the Cisco cli.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1719466852511/d7ae53ca-a5e7-4eb8-a3df-b1a6dabd9919.png align="center")

The tool displays the disk space on the device:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1719467184226/a39c3f36-0886-4f5d-9c9b-7b13c7867d51.png align="center")

The tool displays the console log:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1719467271493/efc67625-7bfd-4c88-aea6-ac4d6774f2e4.png align="center")

Display from 3rd party networking logs:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1719467920403/738018e4-cf1e-4c9f-a294-47e78605b41e.png align="center")

Status from 3rd party tool:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1719468261564/36905e4a-9ad5-4cc0-a78f-e5a1fb030124.png align="center")

Results of speedtest on WAN interface:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1719468763735/2bebde2f-d712-4195-bb97-d5535ce79d06.png align="center")

IPs and devices on the LAN:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1719472343787/64634773-f1f5-42b9-8df3-3a1d50ddb9ac.png align="center")

[Ronald Bartels](https://www.linkedin.com/in/ronaldxbartels/) ensures that Internet inhabiting things are connected reliably online at [Fusion Broadband South Africa](https://www.linkedin.com/company/fusion-broadband-south-africa/) - the leading specialized SD-WAN provider in South Africa. Learn more about the best SD-WAN in the world: 👉 [Contact Fusion](https://fusionsdwan.co.za/failure-proof/)

%[https://hubandspoke.amastelek.com/discover-fusion]
