Skip to content

Latest commit

 

History

History
511 lines (364 loc) · 17.1 KB

USER_GUIDE.md

File metadata and controls

511 lines (364 loc) · 17.1 KB

📜Guide d'utilisation du script Bash avec dialog

Introduction à dialog

Qu'est-ce que dialog ?

Dialog est un utilitaire en ligne de commande qui permet de créer des interfaces utilisateur graphiques (GUI) simples, mais efficaces, directement depuis vos scripts Bash. Il vous offre la possibilité d'interagir avec l'utilisateur à travers des boîtes de dialogue, des menus, des listes déroulantes, et bien plus encore, sans avoir à recourir à des langages de programmation plus complexes comme Python ou C++.

Installation et configuration

L'installation de dialog varie en fonction de votre distribution Linux. Généralement, vous pouvez l'installer à l'aide de votre gestionnaire de paquets :

  • Debian/Ubuntu: sudo apt install dialog
  • Fedora/CentOS: sudo dnf install dialog

Une fois installé, vous pouvez l'utiliser directement dans vos scripts Bash.

Création d'une interface simple

Boîtes de dialogue de base

  • Message: Affiche un simple message à l'utilisateur.

    Bash

    dialog --msgbox "Hello, World!" 10 30
    
    
  • Oui/Non: Pose une question à l'utilisateur et attend une réponse Oui ou Non.

    Bash

    dialog --yesno "Voulez-vous continuer ?" 10 30
    
    
  • Entrée de texte: Permet à l'utilisateur de saisir du texte.

    Bash

    dialog --inputbox "Entrez votre nom :" 10 30 2> input.txt
    
    

Menus et listes déroulantes

  • Menu: Propose un choix parmi plusieurs options.

    Bash

    dialog --menu "Choisissez une option" 10 30 2 \
        1 "Option 1" \
        2 "Option 2"
    
    
  • Liste déroulante: Permet de sélectionner une valeur dans une liste.

    Bash

    dialog --checklist "Sélectionnez les couleurs" 10 30 2 3 \
        1 "Rouge" on \
        2 "Vert" off \
        3 "Bleu" off
    
    

Barres de progression

  • Barre de progression: Affiche une barre de progression pour simuler une tâche en cours.

    Bash

    for i in {1..100}; do
        dialog --gauge "Progression" 10 30 $i 100
        sleep 0.1
    done
    
    

Personnalisation de l'interface

  • Couleurs, titres, tailles: Vous pouvez personnaliser l'apparence des boîtes de dialogue en utilisant différentes options. Par exemple, --title pour définir un titre, --backtitle pour un titre de fond, et --color pour les couleurs.
  • Gestion des événements utilisateur: Dialog peut capturer les réponses de l'utilisateur et les utiliser pour contrôler le flux de votre script.

Exemples concrets d'utilisation

  • Création d'un menu de démarrage: Vous pouvez créer un menu interactif pour lancer différentes applications ou scripts.
  • Automatisation de tâches répétitives: Dialog peut être utilisé pour guider l'utilisateur à travers une série de questions afin de configurer automatiquement des paramètres ou exécuter des commandes.

En résumé

Dialog est un outil puissant pour créer des interfaces utilisateur simples et efficaces dans vos scripts Bash. Il vous permet d'interagir avec l'utilisateur de manière intuitive et de rendre vos scripts plus conviviaux.

Mise en pratique pour notre projet

🎯Introduction

Ce script utilise la commande dialog pour créer une interface utilisateur interactive dans le terminal. Il inclut des menus pour :

  • 👤La gestion des utilisateurs.
  • 💻La gestion des ordinateurs.
  • 🔐Une connexion SSH sécurisée.

Fonctionnement général

Les étapes

🔐Connexion SSH


local choix=$(dialog --stdout \
        --title "Connexion SSH" \
        --menu "Veuillez choisir une option :" 15 50 6 \
        1 "Connexion en SSH à un poste client")

    case $choix in
    1)
        # Demande des informations de connexion
        Utilisateur=$(dialog --stdout --inputbox "Entrez le nom d'utilisateur client" 8 40)
        IP=$(dialog --stdout --inputbox "Entrez l'adresse IP de l'ordinateur distant" 8 40)
        Port=22
        MotDePasse=$(dialog --stdout --insecure --passwordbox "Entrez le mot de passe pour ${Utilisateur}" 8 40)

        # Exécution de la commande SSH
        resultat=$(sshpass -p "${MotDePasse}" ssh ${Utilisateur}@${IP} -p ${Port} "echo 'Connexion SSH réussie à ${Utilisateur}@${IP}'")

        # Affichage du résultat
        dialog --msgbox "$resultat" 8 40
        ;;
    *)
        # Quitter le script en cas d'option invalide
        clear
        exit 0
        ;;
    esac
}

Option Fonctionnalité :

  • --inputbox: Permet à l'utilisateur de saisir du texte, généralement utilisé pour demander le nom d'utilisateur et l'adresse IP dans ce contexte.
  • --passwordbox: Assure une saisie sécurisée du mot de passe, masquant les caractères saisis pour des raisons de confidentialité.
  • sshpass: Un utilitaire externe qui automatise la saisie du mot de passe pour les commandes SSH, rendant la connexion plus fluide.

🏠Menu Principal

    local choix=$(dialog --stdout \
        --title "Menu Principal" \
        --menu "Veuillez choisir une option :" 15 50 6 \
        1 "Gestion des utilisateurs" \
        2 "Gestion des ordinateurs")

    case $choix in
    1)
        menu_util
        ;;
    2)
        menu_ordi
        ;;
    *)
        clear
        exit 0
        ;;
    esac
}

Options principales :

  • --title : Titre de la fenêtre.
  • --menu : Affiche des options avec un menu interactif.
  • 15 50 6 : Définit la taille de la fenêtre (15 lignes, 50 colonnes) et le nombre maximal d'options visibles.

Sous-menus

👤 Menu Utilisateur

    local choix=$(dialog --stdout \
        --title "Menu Utilisateur" \
        --menu "Veuillez choisir une option :" 15 50 6 \
        1 "Informations utilisateur" \
        2 "Actions sur les utilisateurs" \
        3 "Retour au menu principal")
    ...
}

Ce menu offre des options pour :

Afficher des informations utilisateur. Gérer les comptes utilisateur (création, suppression, modification).

💾Menu Ordinateur

    local choix=$(dialog --stdout \
        --title "Menu Ordinateur" \
        --menu "Veuillez choisir une option :" 15 50 6 \
        1 "Obtenir des informations sur l'ordinateur" \
        2 "Effectuer des actions sur l'ordinateur" \
        3 "Retour au menu précédent")
    ...
}

Inclut des fonctionnalités pour :

Afficher les informations du système (disques, RAM, système d'exploitation). Gérer l'alimentation, les répertoires, et les logiciels.

🔧Exécution de commandes distantes

executer_commande() {
    local commande="$1"
    sshpass -p "${MotDePasse}" ssh ${Utilisateur}@${IP} -p ${Port} "$commande" 2>&1
}

Cette fonction centralise l'exécution de commandes sur une machine distante via SSH.

📂Gestion des Répertoires

📂Création d'un répertoire

    local chemin=$(dialog --stdout --inputbox "Entrez le chemin du répertoire à créer :" 8 40)
    if [ -n "$chemin" ]; then
        if executer_commande "mkdir -p '$chemin'"; then
            dialog --msgbox "Répertoire '$chemin' créé avec succès." 8 40
        else
            dialog --msgbox "Échec de la création du répertoire '$chemin'." 8 40
        fi
    else
        dialog --msgbox "Chemin non fourni." 8 40
    fi
}

⚡ Gestion des Logiciels

🛠️ Installer un logiciel

    local logiciel=$(dialog --stdout --inputbox "Entrez le nom du logiciel à installer :" 8 40)
    if [ -n "$logiciel" ]; then
        if executer_commande "sudo apt install -y '$logiciel'"; then
            dialog --msgbox "Logiciel '$logiciel' installé avec succès." 8 40
        else
            dialog --msgbox "Échec de l'installation de '$logiciel'." 8 40
        fi
    else
        dialog --msgbox "Nom du logiciel non fourni." 8 40
    fi
}

Résumé des principales commandes dialog

✨ Options Description

  • --title Définit le titre de la fenêtre.
  • --menu Affiche un menu avec des options.
  • --inputbox Demande une saisie utilisateur.
  • --msgbox Affiche un message d'information.
  • --passwordbox Permet une saisie sécurisée du mot de passe.
  • --yesno Affiche une boîte de dialogue Oui/Non.

🚀 Lancement du script

Pour exécuter le script, utilisez la commande suivante :

chmod +x script.sh
./script.sh

Guide d'utilisation de scripts PowerShell pour créer des interfaces graphiques

Introduction à PowerShell

Présentation de PowerShell

PowerShell est un shell de ligne de commande et un langage de script développé par Microsoft. Il est conçu pour l'automatisation des tâches et la gestion de la configuration des systèmes d'exploitation Windows, mais il est également disponible sur Linux et macOS. PowerShell offre une approche orientée objet de la gestion des systèmes, ce qui le rend très puissant pour des tâches complexes.

Comparaison avec Bash et dialog

  • Bash: Un shell de commande traditionnel pour les systèmes Unix-like. Il est excellent pour l'automatisation de tâches, mais ses capacités pour créer des interfaces graphiques sont limitées. Dialog est un outil complémentaire qui permet d'ajouter des éléments graphiques simples à des scripts Bash.
  • PowerShell: Offre une intégration plus poussée avec le système d'exploitation Windows et dispose de fonctionnalités natives pour créer des interfaces graphiques plus sophistiquées. Il est également orienté objet, ce qui facilite la gestion de données complexes.

Création d'une interface graphique simple avec PowerShell

Modules et cmdlets à utiliser

Pour créer des interfaces graphiques en PowerShell, vous utiliserez généralement des modules comme :

  • Windows Forms: Un framework .NET pour créer des applications Windows avec une interface utilisateur graphique.
  • WPF (Windows Presentation Foundation): Un framework plus récent et plus puissant pour créer des interfaces utilisateur riches.

Ces modules fournissent des cmdlets (commandes) pour créer des fenêtres, des boutons, des champs de texte, etc.

Exemple concret : une fenêtre avec des boutons

[System.Windows.Forms.Application]::EnableVisualStyles()

$form = New-Object System.Windows.Forms.Form
$form.Text = "Ma première fenêtre PowerShell"
$form.Size = New-Object System.Drawing.Size(300, 200)

$button = New-Object System.Windows.Forms.Button
$button.Text = "Cliquez ici"
$button.Location = New-Object System.Drawing.Point(100, 50)
$form.Controls.Add($button)

$form.Add_Load({
    $button.Add_Click({
        [System.Windows.Forms.MessageBox]::Show("Vous avez cliqué sur le bouton !")
    })
})

[void]$form.ShowDialog()

Avantages et inconvénients de PowerShell pour les interfaces graphiques

Avantages

  • Puissant et flexible: PowerShell offre de nombreuses possibilités pour créer des interfaces utilisateur personnalisées.
  • Intégration avec .NET: Vous pouvez utiliser toutes les fonctionnalités de .NET pour créer des applications riches.
  • Automatisation: PowerShell est excellent pour automatiser la création et la gestion d'interfaces utilisateur.

Inconvénients

  • Courbe d'apprentissage: Il faut maîtriser les concepts de programmation orientée objet et les modules spécifiques pour créer des interfaces complexes.
  • Performance: Pour des applications graphiques très performantes, des outils comme C# ou C++ peuvent être plus adaptés.

En conclusion

PowerShell est un outil puissant pour créer des interfaces graphiques, en particulier pour les administrateurs système qui ont besoin d'automatiser des tâches et de créer des outils personnalisés. Bien que la courbe d'apprentissage puisse être plus raide que pour des outils plus simples, les possibilités sont presque infinies.

🖥️ Notre Projet : Interface Graphique Intuitive

Pour notre projet, nous avons opté pour Windows Form afin de créer une interface graphique conviviale. Cette approche offre plusieurs avantages :

🎯 Accessibilité Pour Tous

  • Interface claire avec des boutons intuitifs
  • Utilisation simple pour les débutants
  • Fonctionnalités avancées pour les experts

🔐 Connexion à Distance

  • Utilisation du protocole SSH
  • Gestion des machines distantes
  • Exécution d'actions à distance
  • Récupération d'informations en temps réel

📊 Suivi et Sécurité

  • Système de logs intégré
  • Traçabilité des actions
  • Surveillance des opérations

Cette solution permet de combiner simplicité d'utilisation et fonctionnalités avancées dans une interface unique et professionnelle. 🚀

Description de l’Interface Graphique en PowerShell

Ce document explique comment créer une interface graphique simple en PowerShell, incluant des fenêtres, des boutons, et leur personnalisation.


Étape 1 : Importation des bibliothèques 🔄

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
  • System.Windows.Forms : Fournit les classes pour créer des fenêtres et composants GUI.
  • System.Drawing : Permet de personnaliser les couleurs, tailles et styles des composants.

Étape 2 : Création d'une fenêtre de sélection pour l'établissement d'une connexion SSH 🔌

1. Création de la fenêtre 🏢

$selectForm = New-Object System.Windows.Forms.Form
$selectForm.Text = "Connexion SSH"
$selectForm.Size = New-Object System.Drawing.Size(400, 200)
$selectForm.StartPosition = "CenterScreen"
  • $selectForm : Crée une fenêtre avec un titre et une taille fixe.
  • StartPosition : Positionne la fenêtre au centre de l'écran.

2. Ajout de champs texte et étiquettes 🔧

Exemple : Adresse serveur

$lblComputer = New-Object System.Windows.Forms.Label
$lblComputer.Text = "Adresse serveur:"
$lblComputer.Location = New-Object System.Drawing.Point(10, 20)
$selectForm.Controls.Add($lblComputer)

$txtComputer = New-Object System.Windows.Forms.TextBox
$txtComputer.Location = New-Object System.Drawing.Point(120, 20)
$txtComputer.Size = New-Object System.Drawing.Size(250, 20)
$selectForm.Controls.Add($txtComputer)
  • Label : Affiche un texte fixe comme "Adresse serveur".
  • TextBox : Permet de saisir une valeur.

Le même principe est appliqué pour "Utilisateur" et "Mot de passe".

3. Ajout d’un bouton « Connecter » 🛠

$btnConnect = New-Object System.Windows.Forms.Button
$btnConnect.Text = "Connecter"
$btnConnect.Location = New-Object System.Drawing.Point(150, 120)
$btnConnect.Add_Click({
    $securePwd = $txtPassword.Text | ConvertTo-SecureString -AsPlainText -Force
    if (Establish-SSHSession -ComputerName $txtComputer.Text -Username $txtUsername.Text -Password $securePwd) {
        $selectForm.DialogResult = [System.Windows.Forms.DialogResult]::OK
        $selectForm.Close()
    }
})
$selectForm.Controls.Add($btnConnect)
  • Bouton : Ajoute un bouton avec une action qui tente d’établir une session SSH.
  • Add_Click : Définit une action au clic.

Étape 3 : Création de la fenêtre principale 🌆

$mainForm = New-Object System.Windows.Forms.Form
$mainForm.Text = "Outil d'Administration"
$mainForm.Size = New-Object System.Drawing.Size(800, 600)
$mainForm.StartPosition = "CenterScreen"
  • Création d'une fenêtre principale pour l’application avec un titre et une taille spécifique.

Étape 4 : Ajout de panneaux pour navigation et contenu 🔼

1. Panneau de navigation 🕒

$navPanel = New-Object System.Windows.Forms.Panel
$navPanel.Location = New-Object System.Drawing.Point(0, 0)
$navPanel.Size = New-Object System.Drawing.Size(200, 600)
$navPanel.BackColor = [System.Drawing.Color]::FromArgb(240, 240, 240)
  • Panel : Crée un panneau vertical pour les boutons de navigation.

2. Panneau de contenu 🔢

$contentPanel = New-Object System.Windows.Forms.Panel
$contentPanel.Location = New-Object System.Drawing.Point(200, 0)
$contentPanel.Size = New-Object System.Drawing.Size(600, 600)
  • Panel : Zone pour afficher le contenu qui change selon la navigation.

Étape 5 : Fonction pour ajouter des boutons de navigation 💻

function New-NavButton {
    param (
        [string]$text,
        [int]$yPosition,
        [scriptblock]$action
    )
    
    $button = New-Object System.Windows.Forms.Button
    $button.Text = $text
    $button.Location = New-Object System.Drawing.Point(10, $yPosition)
    $button.Size = New-Object System.Drawing.Size(180, 30)
    $button.Add_Click($action)
    $navPanel.Controls.Add($button)
}
  • Paramètres :
    • $text : Texte à afficher sur le bouton.
    • $yPosition : Position verticale du bouton.
    • $action : Script à exécuter lors du clic.
  • Controls.Add : Ajoute le bouton au panneau de navigation.