So this is pretty neat. It has already saved me once. Instead of buying an expensive console switch, I decided to build my own using a Raspberry Pi 4 and some usb to rs-232 console break out cables. Lets get to it:

Materials
1 x Raspberry Pi – I used an rpi4 with 16gb micro sd and just the debian based Raspbian OS.
2 x Gearmo 4 x RS232 to USB /w FTDI chip cables.
You can buy these from Amazon here.
8 x RS232 Serial to Rollover cables. I used the many blue Cisco ones I had.

Setup
1. Plug your usb to serial cables into the rpi and cable up the console devices with your Cisco cables.
2. Install screen and dialog:
sudo apt install screen
sudo apt install dialog

3. Use dmesg to see the assigned terminal type for each rs232 plug:
pi@ConsoleSwitch:~ $ dmesg | grep ttyUSB
[ 4.858516] usb 1-1.1: FTDI USB Serial Device converter now attached to ttyUSB0
[ 4.859362] usb 1-1.1: FTDI USB Serial Device converter now attached to ttyUSB1
[ 4.861499] usb 1-1.1: FTDI USB Serial Device converter now attached to ttyUSB2
[ 4.863215] usb 1-1.1: FTDI USB Serial Device converter now attached to ttyUSB3
[ 4.864127] usb 1-1.2: FTDI USB Serial Device converter now attached to ttyUSB4
[ 4.865099] usb 1-1.2: FTDI USB Serial Device converter now attached to ttyUSB5
[ 4.866437] usb 1-1.2: FTDI USB Serial Device converter now attached to ttyUSB6
[ 4.867354] usb 1-1.2: FTDI USB Serial Device converter now attached to ttyUSB7

4. You can use screen to serial connnect to a tty:
sudo screen /dev/ttyUSB0 9600
Substitute the correct tty and baud to connect to the serial ports.
5. Setup a login script that executes when sshing to the pi:
touch login.sh
chmod +x login.sh

6. Move the script to /etc/profile.d/ anything in this path will be executed upon SSH connection:
sudo mv ./login.sh /etc/profile.d/
7. Edit the script in the path with the following
sudo nano /etc/profile.d/login.sh

#!/bin/bash
HEIGHT=15
WIDTH=40
CHOICE_HEIGHT=4
BACKTITLE="Corp OOB Console Switch"
TITLE="Menu"
MENU="Choose one of the following options:"
OPTIONS=(1 "Firewall"
2 "Router"
3 "Switch")
CHOICE=$(dialog --clear \
--backtitle "$BACKTITLE" \
--title "$TITLE" \
--menu "$MENU" \
$HEIGHT $WIDTH $CHOICE_HEIGHT \
"${OPTIONS[@]}" \
2>&1 >/dev/tty)
clear
case $CHOICE in
1)
sudo screen /dev/ttyUSB0 9600
echo "You chose Option 1 - Console to Firewall Serial Port ttyUSB0, relaunch the menu with
./etc/profile.d/login.sh"
;;
2)
sudo screen /dev/ttyUSB1 9600
echo "You chose Option 2 - Console to Router Serial Port ttyUSB1, relaunch the menu with
./etc/profile.d/login.sh"
;;
3) sudo screen /dev/ttyUSB2 9600
echo "You chose Option 3 - Console to Switch Serial Port ttyUSB2, relaunch the menu with
./etc/profile.d/login.sh"
;;
esac

Screenshot
Console Switch

You can use the key sequence ctrl-a k to kill a screen session or ctrl-a d to detach from a screen session. Enjoy!