#!/bin/bash # Enrolement d'un poste dans le parc INGEN. # curl -fsSL https://install.ingen-geosciences.com | sudo bash # # Utilise le serveur SSH INTEGRE a NetBird (port 22022 sur l'adresse du # mesh uniquement), en mode "identite machine" : pas de jeton, pas de # navigateur. L'acces est regi par la strategie NetBird admin -> postes. set -u SERVEUR="https://netbird.ingen-geosciences.com" IP_SERVEUR="92.243.25.160" FLAGS="--allow-server-ssh --disable-ssh-auth --enable-ssh-root" echo echo "==================================================" echo " PARC INGEN - $(hostname)" echo "==================================================" echo if [ "$(id -u)" -ne 0 ]; then echo "ERREUR : relancer avec sudo :" echo " curl -fsSL https://install.ingen-geosciences.com | sudo bash" exit 1 fi echo "[1/4] Reseau" if ! getent hosts netbird.ingen-geosciences.com | grep -q "$IP_SERVEUR"; then IFACE=$(ip route show default | awk '{print $5; exit}') resolvectl dns "$IFACE" 1.1.1.1 8.8.8.8 2>/dev/null || true sleep 3 fi getent hosts netbird.ingen-geosciences.com | grep -q "$IP_SERVEUR" \ || { echo " ECHEC : serveur injoignable, verifier internet"; exit 1; } echo " ok" echo "[2/4] Agent NetBird" if ! command -v netbird >/dev/null 2>&1; then curl -fsSL https://pkgs.netbird.io/install.sh | sh >/dev/null 2>&1 fi command -v netbird >/dev/null 2>&1 || { echo " ECHEC installation"; exit 1; } echo " ok ($(netbird version 2>/dev/null))" echo "[3/4] Connexion au mesh" # netbird up sur un agent deja connecte ne reapplique PAS les drapeaux : # il faut toujours passer par down d'abord. DEJA=0 netbird status 2>/dev/null | grep -q "Management: Connected" && DEJA=1 if [ "$DEJA" -eq 0 ]; then if [ -z "${CLE:-}" ]; then echo printf " Cle d'enrolement : " read -r CLE < /dev/tty fi netbird down >/dev/null 2>&1 || true; sleep 1 netbird up --management-url "$SERVEUR" --setup-key "$CLE" $FLAGS >/dev/null 2>&1 else echo " deja sur le mesh, reapplication des reglages SSH" netbird down >/dev/null 2>&1; sleep 2 netbird up --management-url "$SERVEUR" $FLAGS >/dev/null 2>&1 fi sleep 4 netbird status 2>/dev/null | grep -q "Management: Connected" \ || { echo " ECHEC : cle refusee (expiree ou deja utilisee ?)"; exit 1; } IP=$(netbird status 2>/dev/null | awk '/NetBird IP:/{print $3}' | cut -d/ -f1) echo " ok - adresse $IP" echo "[4/4] Verification" ECOUTE=$(ss -tln 2>/dev/null | grep -c ":22022") echo echo "==================================================" if [ -n "$IP" ] && [ "$ECOUTE" -ge 1 ]; then echo " SUCCES" echo echo " Poste : $(hostname)" echo " ADRESSE : $IP" echo echo " >>> NOTER L'ADRESSE et l'envoyer a Arthur." else echo " A VERIFIER - envoyer ceci a Arthur :" echo " adresse mesh : ${IP:-aucune}" echo " serveur ssh : $ECOUTE ecouteur(s) sur 22022" netbird status 2>/dev/null | grep -E "Management|Signal|SSH Server" fi echo "==================================================" echo