Tutoriales

Mejore el inicio de sesión SSH usando el menú de selección de sesión de Tmux

En este artículo demostraremos cómo Establecer el menú de selección de sesión tmux Se inició al iniciar sesión en un sistema Linux remoto a través de SSH. Este menú enumerará las sesiones tmux existentes y brindará la opción de crear una nueva sesión.

introducir

multiplexor, un multiplexor de terminal que permite a los usuarios administrar múltiples sesiones de terminal dentro de una sola ventana. Esto es muy conveniente, especialmente cuando se trabaja en sistemas remotos a través de SSH.

Un enfoque común es El inicio de sesión SSH se adjuntará automáticamente a la sesión tmux. Pero, ¿qué sucede si desea tener más control sobre esto, como poder seleccionar dentro de una sesión existente o crear una nueva? Esto se puede lograr con la ayuda de scripts Bash.

En los siguientes pasos, le mostraré cómo mejorar el inicio de sesión SSH remoto en Linux utilizando el script selector de sesión Tmux.

Paso 1: crear un script de menú Tmux

Primero creamos un archivo llamado tmux_menu.sh Tiene el siguiente contenido. Este script tomará sesiones tmux existentes, se las mostrará al usuario y le permitirá conectarse a una de las sesiones o crear una nueva.

#!/bin/bash

# Get a list of existing tmux sessions:
TMUX_SESSIONS=$(tmux ls | awk -F: '{print $1}')

# If there are no existing sessions:
if [[ -z $TMUX_SESSIONS ]]; then
    echo "No existing tmux sessions. Creating a new session called 'default'..."
    tmux new -s default
else
    # Present a menu to the user:
    echo "Existing tmux sessions:"
    echo "$TMUX_SESSIONS"
    echo "Enter the name of the session you want to attach to, or 'new' to create a new session: "
    read user_input

    # Attach to the chosen session, or create a new one:
    if [[ $user_input == "new" ]]; then
        echo "Enter name for new session: "
        read new_session_name
        tmux new -s $new_session_name
    else
        tmux attach -t $user_input
    fi
fi

Guarde este script en un archivo llamado tmux_menu.sh en su directorio personal.

LEER  VCMI, el motor de código abierto para Heroes of Might and Magic III v1.4.3, contiene muchas correcciones de errores.

Descripción del guión:

Analicemos el guión proporcionado pieza por pieza:

1. Guión Shebang:

#!/bin/bash

Sherbón (#!/bin/bash) se utiliza para especificar el intérprete para ejecutar el script.En este caso lo es bash.

2. Obtenga una sesión tmux existente:

# Get a list of existing tmux sessions:
TMUX_SESSIONS=$(tmux ls | awk -F: '{print $1}')

En este fragmento, tmux ls Enumere todas las sesiones tmux existentes. La salida se canaliza (|) llegar awky luego procesarlo para extraer solo el nombre de la sesión (antes de los dos puntos) :).Estos nombres se almacenan en variables. TMUX_SESSIONS.

3. Verifique las sesiones tmux existentes:

# If there are no existing sessions:
if [[ -z $TMUX_SESSIONS ]]; then
    echo "No existing tmux sessions. Creating a new session called 'default'..."
    tmux new -s default
else
   ...
fi

Aquí, el bloque if-else comprueba si TMUX_SESSIONS esta vacio (-z Compruebe si hay cadenas de longitud cero).Si está vacío, significa que no existe ninguna sesión, por lo que se creará una nueva sesión denominada «predeterminada». tmux new -s default.Si no está vacío, el script continuará ejecutándose. else obstruido.

4. Mostrar sesiones existentes y avisar al usuario.:

    # Present a menu to the user:
    echo "Existing tmux sessions:"
    echo "$TMUX_SESSIONS"
    echo "Enter the name of the session you want to attach to, or 'new' to create a new session: "
    read user_input

adentro else Dentro del bloque, el script primero muestra la sesión tmux existente. Luego solicita al usuario que ingrese el nombre de una sesión existente para adjuntar o que escriba «nueva» para crear una nueva sesión.este read El comando se utiliza para capturar la entrada del usuario.

5. Procesar la entrada del usuario:

    # Attach to the chosen session, or create a new one:
    if [[ $user_input == "new" ]]; then
        echo "Enter name for new session: "
        read new_session_name
        tmux new -s $new_session_name
    else
        tmux attach -t $user_input
    fi

Utilice otro bloque if-else para manejar los pasos posteriores según la entrada del usuario.Si el usuario ingresa «nuevo», se le pedirá que ingrese un nombre para la nueva sesión y luego use tmux new -s $new_session_name.Si el usuario ingresa el nombre de una sesión existente, el script se agregará a esa sesión usando tmux attach -t $user_input.

En definitiva, el script proporciona una interfaz de usuario sencilla al iniciar sesión y se puede adjuntar a una sesión tmux existente o crear una nueva sesión tmux, mejorando así la experiencia del usuario al gestionar múltiples sesiones tmux.

Paso 2: hacer ejecutable el script

Otorgue permisos de ejecución al script usando el siguiente comando:

$ chmod +x ~/tmux_menu.sh

Paso 3: actualice su archivo de configuración de Bash

Ahora actualiza tu ~/.bash_profile Puede crear un archivo en el sistema remoto que llame a este script cuando inicie sesión a través de SSH, pero solo si aún no está en una sesión tmux y el shell es interactivo.

abre tu ~/.bash_profile Crea el archivo en tu editor favorito:

$ nano ~/.bash_profile

Agregue las siguientes líneas:

# If not inside a tmux session, and if the shell is interactive, then run the tmux menu script
if [[ -z "$TMUX" ]] && [[ $- == *i* ]]; then
    ~/tmux_menu.sh
fi

Guarde el archivo y ciérrelo presionando CTRL+O seguido por CTRL+X.

Paso 4: Pruebe la configuración del menú de selección de sesión de Tmux

1. Desde su computadora local, use el siguiente comando para conectarse al sistema remoto a través de SSH: ssh user@remote_system.

ejemplo:

$ ssh [email protected]

Después de iniciar sesión correctamente, se conectará automáticamente a ‘por defecto’ Sesión Tmux.

2. Después de iniciar sesión en el sistema remoto, cree varias sesiones tmux ejecutando los siguientes comandos:

$ tmux new -s tmux1 -d
$ tmux new -s tmux2 -d

El comando anterior establecerá dos sesiones Tmux independientes, a saber Multiplexor 1 y Multiplexor 2.

Verifiquémoslos enumerando las sesiones tmux disponibles:

$ tmux ls

Salida de ejemplo:

default: 1 windows (created Mon Oct  2 13:31:25 2023)
tmux1: 1 windows (created Mon Oct  2 13:32:28 2023)
tmux2: 1 windows (created Mon Oct  2 13:32:32 2023)
Crear y enumerar sesiones de Tmux

Como puede ver, hay 3 sesiones de Tmux (predeterminada, tmux1 y tmux2) en mi servidor remoto Debian 12.

3. Ahora desconéctese de la sesión tmux usando el siguiente comando (si está conectado a una) Ctrl+b seguido por d.

Cierre sesión en la sesión SSH actual.

4. SSH al sistema remoto nuevamente y ahora debería ver varias sesiones enumeradas en el menú de selección de sesión de tmux.

$ ssh [email protected]
Linux debian12 6.1.0-10-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.38-1 (2023-07-14) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Oct  2 13:44:33 2023 from 192.168.1.101
Existing tmux sessions:
default
tmux1
tmux2
Enter the name of the session you want to attach to, or 'new' to create a new session: 

5. Como puede ver en el resultado, el menú de selección de sesión de Tmux enumera tres sesiones de tmux existentes. Si desea conectarse a cualquiera de las sesiones enumeradas, simplemente escriba el nombre de la sesión tmux y presione ENTER y automáticamente se conectará a la sesión correspondiente.

Si no desea conectarse a una sesión existente sino crear una nueva sesión, escriba «nueva» seguido del nombre de la nueva sesión.

Menú de selección de sesión de Tmux
Menú de selección de sesión de Tmux

Después de ingresar el nombre de la nueva sesión de tmux, presione ENTER y se conectará a la nueva sesión de tmux.

Listar sesiones de Tmux
Listar sesiones de Tmux

Tenga en cuenta que el menú de selección de sesión de tmux solo se muestra cuando hay dos o más sesiones de tmux activas. Si no hay sesiones activas, se inicia automáticamente una nueva sesión «Predeterminada».

en conclusión

Con esta configuración, verá el menú de selección de sesión de tmux cada vez que acceda a un sistema remoto a través de SSH. Esto le permite gestionar mejor sus sesiones de tmux, proporcionando un entorno de trabajo remoto más organizado y eficiente.

Ahora, la próxima vez que se conecte a un sistema remoto a través de SSH, podrá conectarse a una sesión tmux existente o crear una nueva, lo que le ayudará a mantenerse organizado y accesible.

LEER  Las mejores distribuciones de Linux para principiantes en 2023

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba