đ Guide dâutilisation de xsshend
đ Guide dâutilisation de xsshend
Guide complet pour maßtriser xsshend - Téléversement SSH parallÚle avec interface TUI moderne
đŻ Vue dâensemble
xsshend est un outil Rust moderne pour le téléversement parallÚle de fichiers vers multiples serveurs SSH. Il offre une interface TUI hiérarchique intuitive avec suivi en temps réel des transferts.
đ Installation et premier lancement
Installation via Cargo
cargo install xsshend
Premier lancement
# Lancement initial - crée automatiquement la configuration
xsshend list
âïž Configuration automatique
Au premier lancement, xsshend :
- DĂ©tecte lâabsence du fichier
~/.ssh/hosts.json
- Crée automatiquement le répertoire
~/.ssh
si nĂ©cessaire - Copie un fichier dâexemple vers
~/.ssh/hosts.json
- Vérifie la présence de clés SSH
- Propose la gĂ©nĂ©ration dâune clĂ© Ed25519 si aucune nâest trouvĂ©e
- Guide lâutilisateur dans la configuration
Structure créée automatiquement
~/.ssh/
âââ hosts.json # Configuration serveurs (créé automatiquement)
âââ id_ed25519 # ClĂ© privĂ©e SSH (gĂ©nĂ©rĂ©e si acceptĂ©e)
âââ id_ed25519.pub # ClĂ© publique SSH
âââ config # Configuration SSH (optionnel)
đź Premiers transferts
Interface de listage avec étiquettes CLI
La commande xsshend list
(ou xsshend -l
) affiche maintenant un aperçu hiĂ©rarchique enrichi avec des Ă©tiquettes CLI pour faciliter lâutilisation en ligne de commande :
xsshend list
Exemple de sortie :
đ Liste des cibles SSH disponibles:
đ Production (--env Production)
đ Region-A (--region Region-A)
đ Public (--type Public)
đ„ïž WEB_SERVER_01 â web01@prod-web-01.example.com (PROD)
đ„ïž API_SERVER_01 â api01@prod-api-01.example.com (PROD)
đ Private (--type Private)
đ„ïž DATABASE_01 â db01@prod-db-01.example.com (PROD)
đ Staging (--env Staging)
đ Region-A (--region Region-A)
đ Public (--type Public)
đ„ïž STAGE_WEB_01 â web01@stage-web-01.example.com (STAGE)
đ Total: 4 cibles disponibles
đĄ Exemples d'utilisation:
xsshend upload --env Production file.txt
xsshend upload --env Staging --region Region-A file.txt
xsshend upload --region Region-A --type Public file.txt
Utilisation des étiquettes CLI
Les étiquettes facilitent la construction des commandes de filtrage :
Filtrage par environnement
# Déployer sur tout l'environnement Production
xsshend upload --env Production deploy.sh
# Déployer sur l'environnement Staging
xsshend upload --env Staging config.json
Filtrage combiné environnement + région
# Déployer sur Production dans la Region-A uniquement
xsshend upload --env Production --region Region-A app.jar
# Déployer sur Staging dans une région spécifique
xsshend upload --env Staging --region Region-B logs.tar.gz
Filtrage par environnement + type
# Déployer sur les serveurs publics de Production
xsshend upload --env Production --type Public web-assets.zip
# Déployer sur les serveurs privés de Staging
xsshend upload --env Staging --type Private database-backup.sql
Filtrage traditionnel (région ou type seulement)
# Déployer sur tous les serveurs d'une région
xsshend upload --region Region-A monitoring.sh
# Déployer sur tous les serveurs d'un type
xsshend upload --type Public static-files.tar.gz
Vérification de connectivité
La nouvelle option --online-only
permet de vĂ©rifier la connectivitĂ© des serveurs avant de lancer lâinterface TUI :
# Lance le TUI en n'affichant que les serveurs en ligne
xsshend --online-only
Cette option :
- Teste la connectivité SSH vers chaque serveur avec un timeout (5 secondes par défaut)
- Filtre automatiquement les serveurs hors ligne
- Affiche seulement les serveurs accessibles dans lâinterface TUI
- Améliore les performances en évitant les timeouts pendant les transferts
Interface utilisateur hiérarchique
Principe
Lâinterface organise vos serveurs en arbre hiĂ©rarchique :
- Environnements (Production, Staging, Development) - Filtrable avec
--env
- Régions (Region-A, Region-B, Local, etc.) - Filtrable avec
--region
- Types de serveurs (Public, Private, Services, etc.) - Filtrable avec
--type
- Serveurs individuels avec leurs alias SSH
Navigation dans lâinterface
Ăcran de sĂ©lection des fichiers
- ââ : Naviguer dans la liste des fichiers/dossiers
- Espace : Sélectionner/désélectionner un fichier
- Entrée : Entrer dans un dossier ou remonter au parent
- h : Aller au répertoire home
- a : Sélectionner tous les fichiers visibles
- c : Vider la sélection
- Tab : Passer Ă lâĂ©cran suivant (sĂ©lection des serveurs)
- q : Quitter lâapplication
Ăcran de sĂ©lection des serveurs
- ââ : Naviguer dans lâarbre hiĂ©rarchique
- â ou EntrĂ©e : DĂ©plier un nĆud / SĂ©lectionner un serveur
- â : RĂ©duire un nĆud ou remonter au parent
- Espace : Sélectionner/désélectionner un serveur
- / : Activer le mode recherche
- a : Sélectionner tous les serveurs visibles
- c : Vider la sélection de serveurs
- Tab : Passer Ă lâĂ©cran suivant (destination)
Mode recherche
- CaractÚres : Taper pour filtrer en temps réel
- Backspace : Effacer un caractĂšre
- Entrée : Valider et sortir du mode recherche
- Ăchap : Annuler la recherche
Ăcran de destination
- CaractĂšres : Taper le chemin de destination
- Entrée : Valider et passer au téléversement
- Ăchap : Revenir Ă lâĂ©cran prĂ©cĂ©dent
Ăcran de progression
- q : Quitter aprĂšs la fin des transferts
- p : Mettre en pause/reprendre (si supporté)
Modes dâutilisation
1. Mode interface complÚte (recommandé)
Lancez lâapplication sans arguments pour accĂ©der Ă lâinterface complĂšte :
xsshend
Cette interface vous guide à travers toutes les étapes :
- Sélection des fichiers
- Sélection des serveurs (interface hiérarchique)
- Choix de la destination
- Téléversement avec barre de progression
2. Mode interactif avec fichiers pré-sélectionnés
xsshend --interactive file1.txt file2.txt
ou
xsshend upload file1.txt file2.txt --interactive
Les fichiers sont prĂ©-sĂ©lectionnĂ©s, vous nâavez quâĂ choisir les serveurs et la destination.
3. Mode ligne de commande avec filtres
# Téléverser vers tous les serveurs de production
xsshend upload file.txt --env Production --dest /opt/app/
# Téléverser vers une région spécifique
xsshend upload *.log --env Staging --region Region-A --dest /var/log/
# Téléverser vers un type de serveurs
xsshend upload config.json --env Production --type Public --dest /etc/app/
4. Mode simulation (dry-run)
xsshend upload file.txt --env Production --dry-run
Simule le transfert sans effectuer de connexions réelles.
Configuration des serveurs
Votre fichier de configuration se trouve dans ~/.ssh/hosts.json
. Voici un exemple de structure :
{
"Production": {
"Region-A": {
"Public": {
"WEB_SERVER_01": {
"alias": "web01@prod-web-01.example.com",
"env": "PROD"
},
"API_SERVER_01": {
"alias": "api01@prod-api-01.example.com",
"env": "PROD"
}
},
"Private": {
"DATABASE_01": {
"alias": "db01@prod-db-01.example.com",
"env": "PROD"
}
}
}
},
"Staging": {
"Region-A": {
"Public": {
"STAGE_WEB_01": {
"alias": "web01@stage-web-01.example.com",
"env": "STAGE"
}
}
}
}
}
Liste des serveurs disponibles
# Lister tous les serveurs
xsshend list
# Filtrer par environnement
xsshend list --env Production
Conseils dâutilisation
Efficacité
- Utilisez la recherche (
/
) pour filtrer rapidement les serveurs dans les grandes infrastructures - Utilisez
a
pour sĂ©lectionner tous les serveurs dâun environnement aprĂšs filtrage - Organisez vos serveurs par environnement â rĂ©gion â type pour une navigation optimale
Sécurité
- Le fichier
hosts.json
peut contenir des informations sensibles, gardez-le sĂ©curisĂ© - Testez toujours sur lâenvironnement de staging avant la production
- Utilisez le mode
--dry-run
pour vérifier vos sélections
Productivité
- Créez des alias dans votre shell pour les commandes fréquentes
- Pré-sélectionnez les fichiers depuis la ligne de commande quand vous les connaissez
- Utilisez lâinterface hiĂ©rarchique pour explorer et dĂ©couvrir votre infrastructure
Gestion robuste des erreurs et timeouts
Serveurs déconnectés
xsshend gÚre gracieusement les serveurs inaccessibles ou déconnectés :
# Vérification préalable de connectivité (recommandé pour les grandes infrastructures)
xsshend --online-only
# Cette option :
# - Teste la connectivité SSH vers chaque serveur (timeout: 5s)
# - Filtre automatiquement les serveurs inaccessibles
# - Affiche seulement les serveurs en ligne dans l'interface TUI
# - Ăvite les blocages pendant les transferts
Timeouts et retry automatique
Les connexions SSH utilisent des timeouts configurés pour éviter les blocages :
- Timeout de connexion TCP : 5 secondes par défaut
- Timeout du handshake SSH : 5 secondes par défaut
- Nombre de tentatives : 2 tentatives maximum par serveur
- Délai entre tentatives : 1 seconde
Comportement en cas dâerreur
Quand un serveur devient inaccessible pendant les transferts :
- Erreur loggĂ©e : Lâerreur est enregistrĂ©e avec dĂ©tails
- Continuation : Les transferts vers les autres serveurs continuent
- Résumé final : Affichage des serveurs réussis vs échoués
- Code de sortie : SuccÚs si au moins un serveur a réussi
Exemple de sortie dâerreur gracieuse :
â Upload Ă©chouĂ© vers SERVER_DOWN : Timeout de connexion TCP
â
Upload réussi vers SERVER_01 : 1,234,567 octets
â
Upload réussi vers SERVER_02 : 1,234,567 octets
đ Upload parallĂšle terminĂ© : 2/3 serveurs rĂ©ussis
â ïž Serveurs Ă©chouĂ©s : SERVER_DOWN
Debug et diagnostic
Pour diagnostiquer les problĂšmes de connexion :
# Mode debug complet
RUST_LOG=debug xsshend upload --env Production file.txt
# Test manuel de connectivité SSH
ssh -o ConnectTimeout=5 -o BatchMode=yes user@server.example.com exit
# Vérifier la configuration SSH locale
ssh -v user@server.example.com