70 lines
1.7 KiB
Bash
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/" |