monosphere-bastion/server_menu.sh
Siphonight 8ccc9e6499 Optimisations et correction de bugs
Ajout d'un lien symbolique pour l'accès au script par les comptes internes du bastion. Correction d'un bug concernant les clés ssh qui utilisait la systématiquement la dernière clé SSH déclarée. Optimization du script de menu serveurs en retirant les utilisations répétées de whoami et en ajoutant une vérification de la séléction choisie qui prends désormais en compte l'abscence d'input utilisateur sans envoyer une erreur de script.
2024-06-19 10:55:57 +02:00

46 lines
2.2 KiB
Bash

#!/bin/bash
AUTHORIZED_SERVERS_PATH="opt/public/servers"
AUTHORIZED_SERVERS_FILE="/$AUTHORIZED_SERVERS_PATH/authorized_servers.txt"
CONNECTED_USER="$(whoami)"
USER_SERVERS=$(grep -w "$CONNECTED_USER" $AUTHORIZED_SERVERS_FILE)
if [ -z "$USER_SERVERS" ]; then
echo "Vous n'avez pas l'autorisation de vous connecter à un serveur."
exit 1
fi
echo "Veuillez sélectionner un serveur auquel vous connecter :"
counter=1
declare -A server_map
while read -r line; do
ip=$(echo "$line" | cut -d ' ' -f 1)
port=$(echo "$line" | cut -d ' ' -f 2)
custom_name=$(echo "$line" | cut -d ' ' -f 3)
server_user=$(echo "$line" | cut -d ' ' -f 4)
server_authkey=$(echo "$line" | cut -d ' ' -f 6)
server_map[$counter]="$ip $port $server_user $server_authkey"
echo "$counter) $custom_name - $server_user $ip:$port"
counter=$((counter + 1))
done <<< "$USER_SERVERS"
read -r -p "Votre choix (1-${#server_map[@]}): " choice
if [ -z "$choice" ] || [ -z "${server_map[$choice]}" ]; then
echo "Sélection invalide."
exit 1
fi
selected_server="${server_map[$choice]}"
echo "Connexion à $selected_server..."
if [ -z "$(echo "$selected_server" | cut -d ' ' -f 4)" ]; then
ttyrec -z --"$(echo "$selected_server" | cut -d ' ' -f 1)"-"$(echo "$selected_server" | cut -d ' ' -f 3)"-- -k 300 --warn-before-kill 60 -- ssh -p "$(echo "$selected_server" | cut -d ' ' -f 2)" "$(echo "$selected_server" | cut -d ' ' -f 3)"@"$(echo "$selected_server" | cut -d ' ' -f 1)"
else
cp /"$AUTHORIZED_SERVERS_PATH"/"$(echo "$selected_server" | cut -d ' ' -f 4)" /home/"$CONNECTED_USER"/"$(echo "$selected_server" | cut -d ' ' -f 4)"
chown "$CONNECTED_USER":"$CONNECTED_USER" /home/"$CONNECTED_USER"/"$(echo "$selected_server" | cut -d ' ' -f 4)"
chmod 600 /home/"$CONNECTED_USER"/"$(echo "$selected_server" | cut -d ' ' -f 4)"
ttyrec -z --"$(echo "$selected_server" | cut -d ' ' -f 1)"-"$(echo "$selected_server" | cut -d ' ' -f 3)"-- -k 300 --warn-before-kill 60 -- ssh -p "$(echo "$selected_server" | cut -d ' ' -f 2)" -i /home/"$CONNECTED_USER"/"$(echo "$selected_server" | cut -d ' ' -f 4)" "$(echo "$selected_server" | cut -d ' ' -f 3)"@"$(echo "$selected_server" | cut -d ' ' -f 1)"
rm -rf /home/"${CONNECTED_USER:?}"/"$(echo "$selected_server" | cut -d ' ' -f 4)"
fi