#!/usr/bin/bash # Dependencies: Dialog. eg 'dnf install dialog' AWK_EXE=$(/usr/bin/which awk) DIALOG_EXE=$(/usr/bin/which dialog) GREP_EXE=$(/usr/bin/which grep) HOSTNAME_EXE=$(/usr/bin/which hostname) PODMAN_EXE=$(/usr/bin/which podman) SORT_EXE=$(/usr/bin/which sort) SUDO_EXE=$(/usr/bin/which sudo) # get a formatted container/image list for the dialog box CONTAINERS=$( ${SUDO_EXE} ${PODMAN_EXE} ps \ | ${GREP_EXE} -v "CONTAINER ID" \ | ${AWK_EXE} '{ printf ("%s %s\n", $12 , $2)}' \ | ${SORT_EXE} \ | ${AWK_EXE} '{printf ("%s %s ", $1, $2)}' ) exec 3>&1 ID=$( ${DIALOG_EXE} --title "Attach to a container" \ --menu "Choose a container" 19 60 10 $CONTAINERS \ 2>&1 1>&3 ) retval=$? exec 3>&- THIS_HOST=$(${HOSTNAME_EXE} -s) if [ $retval -eq 0 ]; then clear echo -e "------------------------------------------------------------------------------" echo "Spawning new shell in ${ID} ('exit' or ^d to return to ${THIS_HOST})." echo -e "------------------------------------------------------------------------------\n" ${SUDO_EXE} ${PODMAN_EXE} exec -it ${ID} bash echo -e "\n------------------------------------------------------------------------------" echo -e "Welcome back to ${THIS_HOST}" echo -e "------------------------------------------------------------------------------\n" fi