Après avoir récemment découvert tmux et Tmuxinator, j'ai essayé de configurer un environnement de développement à utiliser.
Par protocole, nous ne sommes pas autorisés à stocker les mots de passe / phrases de passe dans des scripts. Donc, ce que je recherche, c'est une attente pour que tmux attende que le tunnel SSH soit configuré (mot de passe fourni, entrez pressé et connecté).
Je sais qu'il y a une commande "wait-for" dans tmux 1.8+. J'utilise 1.9a via Cygwin. Mais même si j'ai relu la documentation, j'ai du mal à la comprendre.
tmux new-session -s development -n editor -d
tmux split-window -v
tmux split-window -v
"Need to send to all panes.
tmux send-keys -t development 'ssh [email protected]' C-m
Voici donc une version très simple de ce que j'ai.
Pensées? Je sais que je peux synchroniser les sessions, je suis toujours en train de résoudre les problèmes.
Modifier : examiner les commandes et extraire les variables du volet vers la commande des volets synchronisés. Cela pourrait être une "meilleure" façon de procéder, jusqu'à ce que je sache comment faire en sorte que TMUX me demande une entrée utilisateur.
Peut émettre une demande de fonctionnalité.
~/.ssh/config
fichier: putHost foo
,User user
etHostname example.com
sur trois lignes consécutives dans le fichier de configuration. Devientssh foo
alors équivalent àssh [email protected]
. // Peut-être que quelque chose comme ça aide aussi:command-prompt -p 'log in as:' -I '[email protected]' 'split-window -v -d %1; split-window -v -d %1'
Réponses:
Quelques notes de
wait-for
Donc, l'utilisation de base de l'attente n'est pas trop compliquée si vous la considérez comme analogue au filetage des primitives de concurrence
Il n'est pas vraiment connecté à d'autres fonctionnalités tmux, juste une implémentation pratique d'IPC.
wait-for event_name
c'est comme attendre un événementwait-for -S event_name
est un moyen de signaler un événementLes options
-U
et-L
sont en quelque sorte orthogonales et agissent comme des sémaphoresRépondre directement à votre question
Vous pouvez résoudre ces types de conditions de concurrence avec
wait-for
mais uniquement si les commandes sont synchrones.Le problème que vous avez ici est que la commande ssh n'est pas synchrone: vous ne pouvez pas dire quand elle est terminée.
En parcourant le manuel, nous pouvons trouver la
LocalCommand
directive qui semble faire ce que nous voulons: exécuter une commande localement une fois la connexion terminée pour pouvoir appelerla source
channel
c'est juste un nom dans son propre espace de noms et sans rapport avec les "événements" prédéfinis de tmux?wait-for -S
ne garantit pas la livraison des messages et lessync-command
finitions avantwait-for
.