Files
Web-API/create_ttyd_session.sh
T

70 lines
1.7 KiB
Bash

#!/bin/bash
# dans /root du serveur docker (avec apid et certificat/cle privee)
# duree est le nb de minute pour la session, par defaut 7200 mn
duree="${1:-7200}"
if (( duree < 15 || duree > 14400 )); then
echo "Duree de la session incorrecte."
exit 2
fi
cat /docker/registry/auth/password | docker login 192.168.10.10:5000/v2 -u nicolas --password-stdin
# Configuration
IMAGE_NAME="192.168.10.10:5000/ttyd_docker:latest"
BASE_PORT=9101
MAX_PORT=9105
# Générer un nom unique (apt install uuid-runtime)
USER_ID=$(uuidgen | cut -d'-' -f1)
CONTAINER_NAME="ttyd_docker_$USER_ID"
# Trouver un port disponible
find_free_port() {
for ((port=$BASE_PORT; port<=$MAX_PORT; port++)); do
if ! lsof -i :$port > /dev/null; then
echo $port
return 0
fi
done
return 1
}
PORT=$(find_free_port)
if [ -z "$PORT" ]; then
echo "Aucun port disponible entre $BASE_PORT et $MAX_PORT."
exit 1
fi
user=$(uuidgen | cut -d'-' -f1)
pass=$(uuidgen | cut -d'-' -f1)
# Lancer le conteneur ttyd
docker run -d \
--name "$CONTAINER_NAME" \
-p "$PORT":7681 \
-e TTYD_USER=$user \
-e TTYD_PASS=$pass \
--rm \
--stop-timeout=30 \
--memory="2g" \
--cpus="0.75" \
"$IMAGE_NAME"
( sleep $duree && docker stop "$CONTAINER_NAME" ) &
if [ $? -ne 0 ]; then
echo "Erreur lors du démarrage du conteneur."
exit 1
fi
PORT_URL=$(($PORT - $BASE_PORT + 1))
# Afficher l'URL d'accès
#echo "Session ttyd créée avec succès !"
#echo "Nom du conteneur : $CONTAINER_NAME"
#echo "Conteneur lancé pour 2 heures : <a href=\"https://user:pass@w-$PORT_URL.lanisys.fr\">URL</a>"
#echo "User: $user / Password: $pass"
#echo "Termine avec succes"
echo "https://$user:$pass@w-$PORT_URL.lanisys.fr/"