#!/bin/bash # Fichier CSV contenant les données des comptes CSV_FILE="$HOME/Sync/BContact/tv_history.csv" # Vérifie si le fichier CSV existe, sinon le crée avec des en-têtes if [[ ! -f "$CSV_FILE" ]]; then echo "name,tv_id,tv_pwd" > "$CSV_FILE" fi # Personnalisation des couleurs de whiptail export NEWT_COLORS=' root=,black window=white,black border=white,black title=blue,black compactbutton=white,black button=blue,black textbox=white,black listbox=white,black actlistbox=blue,black sellistbox=blue,black actsellistbox=blue,black ' # Fonction pour afficher un menu show_menu() { MENU_ITEMS=("1" "Ajouter" "2" "Consulter" "3" "Supprimer") CHOICE=$(whiptail --title "TeamViewer TUI" --menu "Que voulez-vous faire?" 15 50 8 "${MENU_ITEMS[@]}" 3>&1 1>&2 2>&3) case $CHOICE in 1) add_account ;; 2) choose_account ;; 3) delete_account ;; *) exit 1 ;; esac } # Fonction pour choisir un compte et afficher les informations choose_account() { # Lecture des noms de comptes à partir du fichier CSV, en ignorant la première ligne (en-tête) ACCOUNT_NAMES=$(tail -n +2 "$CSV_FILE" | cut -d',' -f1) # Préparation de la liste pour whiptail MENU_ITEMS=() INDEX=1 while IFS= read -r account; do MENU_ITEMS+=("$INDEX" "$account") INDEX=$((INDEX + 1)) done <<< "$ACCOUNT_NAMES" # Affichage de la liste des comptes avec whiptail ACCOUNT_INDEX=$(whiptail --title "TOTP TUI" --menu "Compte :" 25 50 15 "${MENU_ITEMS[@]}" 3>&1 1>&2 2>&3) # Si l'utilisateur annule, retourner au menu principal if [[ $? -ne 0 ]]; then show_menu fi # Récupérer les informations du compte sélectionné, en ignorant la première ligne (en-tête) LINE=$(tail -n +2 "$CSV_FILE" | sed -n "${ACCOUNT_INDEX}p") IFS=',' read -r name tv_id tv_pwd <<< "$LINE" # Affichage des informations du compte sélectionné whiptail --title "Informations du Compte" --msgbox "Nom: $name\nID: $tv_id\nMot de passe: $tv_pwd" 15 50 show_menu } # Fonction pour ajouter un compte add_account() { name=$(whiptail --title "Ajouter un Compte" --inputbox "Entrez le nom du compte:" 10 60 3>&1 1>&2 2>&3) tv_id=$(whiptail --title "Ajouter un Compte" --inputbox "Entrez l'ID TeamViewer:" 10 60 3>&1 1>&2 2>&3) tv_pwd=$(whiptail --title "Ajouter un Compte" --inputbox "Entrez le mot de passe TeamViewer:" 10 60 3>&1 1>&2 2>&3) # Ajouter l'entrée au fichier CSV echo "$name,$tv_id,$tv_pwd" >> "$CSV_FILE" whiptail --title "Succès" --msgbox "Le compte a été ajouté avec succès!" 10 60 show_menu } # Fonction pour supprimer un compte delete_account() { # Lecture des noms de comptes à partir du fichier CSV, en ignorant la première ligne (en-tête) ACCOUNT_NAMES=$(tail -n +2 "$CSV_FILE" | cut -d',' -f1) # Préparation de la liste pour whiptail MENU_ITEMS=() INDEX=1 while IFS= read -r account; do MENU_ITEMS+=("$INDEX" "$account") INDEX=$((INDEX + 1)) done <<< "$ACCOUNT_NAMES" # Affichage de la liste des comptes avec whiptail ACCOUNT_INDEX=$(whiptail --title "Supprimer un Compte" --menu "Choisissez un compte à supprimer:" 25 50 15 "${MENU_ITEMS[@]}" 3>&1 1>&2 2>&3) # Si l'utilisateur annule, retourner au menu principal if [[ $? -ne 0 ]]; then show_menu fi # Récupérer les informations du compte sélectionné, en ignorant la première ligne (en-tête) sed -i "${ACCOUNT_INDEX}d" "$CSV_FILE" whiptail --title "Succès" --msgbox "Le compte a été supprimé avec succès!" 10 60 show_menu } # Démarrage du script show_menu