Hi, I’m pleased to share my ROS Tesseract, an open source RouterOS monitoring tool. It’s entirely written in Python and curses (it’s a TUI). Tested with Python3 under GNU/Linux, dunno if it will run under Windows or other OS (maybe if Python and required modules are installed).
https://github.com/wildstray/ROS-Tesseract
It uses a json configuration file and it’s totally customizable: you can specify what to display and how (position on screen, colors, etc.). I wrote this to have a fast overview and monitors multiple parameters together in a terminal screen (unlike WebUI of RouterOS where you can view a single section at a time or WinBox where you have to open multiple windows).
It’s under GPL v3.0 so if you want fork and modify freely, PR are welcome (but unluckily I have a lot of work and little free time, so I apologize in advance and don’t expect fast response from me here or on Github).
Like this idea! I played with JS and blessed module before to do similar a “TUI” since for “status” things, GUI/web sometimes aren’t as quick or information dense. This is especially true with RouterOS, since winbox/webfig/etc are NOT very helpful to get an overview of operational state of a router.
I couldn’t get it work on macOS. Ran into several problems.
- The requirements get errors in tabulate due to collections/iterable, upgrading it got past that. So requirement used are:
numpy in ./venv/lib/python3.13/site-packages (2.2.5)
laiarturs-ros-api in ./venv/lib/python3.13/site-packages (1.1.0)
tabulate in ./venv/lib/python3.13/site-packages (0.9.0)
- The right tabulate package got to the following error, which I’m not sure how to resolve (api and api-ssl both enabled, right username/password in the ros-tasseract.json). I get this in the venv for your project:
$ > python3 ros-tesseract
Traceback (most recent call last):
File "/Users/amm0/Documents/ROS-Tesseract/ros-tesseract", line 411, in <module>
curses.wrapper(main)
~~~~~~~~~~~~~~^^^^^^
File "/usr/local/Cellar/python@3.13/3.13.3/Frameworks/Python.framework/Versions/3.13/lib/python3.13/curses/__init__.py", line 94, in wrapper
return func(stdscr, *args, **kwds)
File "/Users/amm0/Documents/ROS-Tesseract/ros-tesseract", line 402, in main
tPoller = poller(quit, config)
File "/Users/amm0/Documents/ROS-Tesseract/ros-tesseract", line 153, in __init__
self.calcHeights()
~~~~~~~~~~~~~~~~^^
File "/Users/amm0/Documents/ROS-Tesseract/ros-tesseract", line 172, in calcHeights
heights[column].append(len(r[0]) + item.get('padding',0) + 4)
~~~~~~~^^^^^^^^
IndexError: list index out of range
- You might want to have some generic JSON that does not depend on LTE being present – if just to test it more broadly. I tried changing JSON too to be simpler too, just be address and routing - but got same error as above.
The API generally works with simple C-based ROS API client, so the API works more generally here.
Anyway, good work here… but, yeah, it couldn’t get it working…
Thank you for trying my script! How you modified the config? Please, paste it here so I can try on my environment… Anyway, I use it to monitor my LTE connection, but LTE configuration (and the presence itself of an LTE interface) is not mandatory.