From 87400c72c18060f63020dc8f7c32660b11cf4f0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Patron?= Date: Thu, 12 Dec 2024 13:53:00 +0100 Subject: [PATCH] Add tig master file --- scripts/tig_pool_master.sh | 172 +++++++++++++++++++++++++++++++++++++ 1 file changed, 172 insertions(+) create mode 100755 scripts/tig_pool_master.sh diff --git a/scripts/tig_pool_master.sh b/scripts/tig_pool_master.sh new file mode 100755 index 0000000..b40ba25 --- /dev/null +++ b/scripts/tig_pool_master.sh @@ -0,0 +1,172 @@ +#!/bin/bash + +# Fonction pour afficher l'usage +usage() { + echo "Usage: $0 -id_slave -nom_slave -ip -v -login -tok -url " + exit 1 +} + +# Vérifier que le nombre total d'arguments est bien 14 (7 options + 7 valeurs) +if [ "$#" -ne 14 ]; then + usage +fi + +# Initialiser les variables pour les paramètres +id_slave="" +nom_slave="" +ip="" +v="" +login_discord="" +private_key="" +URL_SERVER="" + +# Récupérer les arguments en entrée +while [[ "$#" -gt 0 ]]; do + case $1 in + -id_slave) + id_slave="$2" + shift 2 + ;; + -nom_slave) + nom_slave="$2" + shift 2 + ;; + -ip) + ip="$2" + shift 2 + ;; + -v) + v="$2" + shift 2 + ;; + -login) + login_discord="$2" + shift 2 + ;; + -tok) + private_key="$2" + shift 2 + ;; + -url) + URL_SERVER="$2" + shift 2 + ;; + *) + echo "Paramètre inconnu : $1" + usage + ;; + esac +done + +# Vérifier que les variables ne sont pas vides +if [ -z "$id_slave" ] || [ -z "$nom_slave" ] || [ -z "$ip" ] || [ -z "$v" ] || [ -z "$login_discord" ] || [ -z "$private_key" ] || [ -z "$URL_SERVER" ]; then + usage +fi + +# Vérifier que screen est installé +if ! command -v screen &> /dev/null; then + echo "Le programme 'screen' est nécessaire mais n'est pas installé. Installation..." + sudo apt install -y screen +fi + +# Afficher les paramètres (ou exécuter une autre logique avec ces valeurs) +echo "ID Slave: $id_slave" +echo "Nom Slave: $nom_slave" +echo "IP: $ip" +echo "VERSION: $v" +echo "Login Discord: $login_discord" +echo "Private Key: $private_key" +echo "URL Server: $URL_SERVER" + +sudo apt update +sudo apt install -y python3 python3-venv python3-dev +sudo apt install -y build-essential +sudo apt install -y cargo +sudo apt install -y curl tmux git libssl-dev pkg-config +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y +source $HOME/.cargo/env +sudo apt install -y libssl-dev + +# Créer le répertoire tig_pool_test et y naviguer +mkdir -p "tig_pool_xnico_v$v" +cd "tig_pool_xnico_v$v" +mkdir -p wasms +sudo chmod -R 777 wasms/ +# Cloner le dépôt git avec la branche spécifiée +git clone https://github.com/tig-pool-nk/tig-monorepo.git + +#curl -o "tig-monorepo/tig-benchmarker/slave.py" "http://tigpool.xyz/echange/slave.py" + +# Créer un environnement virtuel Python et l'activer +python3 -m venv mon_env +source mon_env/bin/activate + +# Naviguer vers le répertoire du benchmarker et construire le projet avec cargo +cd tig-monorepo/tig-benchmarker/ +cargo build -p tig-worker --release + + + +# Installer les dépendances Python +pip install -r requirements.txt +pip install requests + +# Récupérer le chemin relatif actuel et le stocker dans une variable +current_path=$(pwd) +echo "Le chemin relatif est : $current_path" + +# Retourner au répertoire précédent +cd ../.. +current_path=$(pwd) +echo "Le chemin relatif est : $current_path" + +# Créer un répertoire client_xnico_pool_v1 et y naviguer +mkdir -p client_xnico_pool +cd client_xnico_pool + +# Télécharger les fichiers et vérifier le succès du téléchargement +wget http://$ip/out/clients/v$v/client_v$v -O client_tig_pool_v$v +if [ $? -ne 0 ]; then + echo "Erreur lors du téléchargement de client_tig_pool_v$v" + exit 1 +fi + +wget http://$ip/out/clients/v$v/bench_v$v -O bench_v$v +if [ $? -ne 0 ]; then + echo "Erreur lors du téléchargement de bench" + exit 1 +fi + +# Donner les permissions d'exécution aux deux fichiers +chmod +x client_tig_pool_v$v +chmod +x bench_v$v + +# Revenir dans le répertoire parent +cd .. + +# Télécharger le fichier de lancement et le renommer en fonction des paramètres fournis +wget -O pool_tig_launch_${id_slave}_${nom_slave}.sh http://$ip/out/master/pool_tig_launch_master.sh + +# Remplacer les placeholders par les valeurs des variables +sed -i "s|@id@|$id_slave|g" pool_tig_launch_${id_slave}_${nom_slave}.sh +sed -i "s|@login@|$login_discord|g" pool_tig_launch_${id_slave}_${nom_slave}.sh +sed -i "s|@tok@|$private_key|g" pool_tig_launch_${id_slave}_${nom_slave}.sh +sed -i "s|@worker@|$nom_slave|g" pool_tig_launch_${id_slave}_${nom_slave}.sh +sed -i "s|@ip@|$ip|g" pool_tig_launch_${id_slave}_${nom_slave}.sh +sed -i "s|@url@|http://$URL_SERVER|g" pool_tig_launch_${id_slave}_${nom_slave}.sh +sed -i "s|@v@|$v|g" pool_tig_launch_${id_slave}_${nom_slave}.sh + +# Donner les permissions d'exécution au fichier de lancement +chmod +x pool_tig_launch_${id_slave}_${nom_slave}.sh + +# Remplacer @@path@@ par le chemin actuel dans le fichier de lancement +sed -i "s|@@path@@|$current_path/|g" pool_tig_launch_${id_slave}_${nom_slave}.sh + +echo "Script terminé avec succès. Les fichiers ont été téléchargés, configurés et le chemin a été mis à jour." + +# Lancer un nouveau screen appelé pool_tig et exécuter le script pool_tig_launch_${id_slave}_${nom_slave}.sh +screen -dmS pool_tig bash -c "cd \"$current_path\" && ./pool_tig_launch_${id_slave}_${nom_slave}.sh ; exec bash" + +sleep 5 +# Aller dans le screen +screen -r pool_tig