Normalement, si vous passez une commande à ssh comme ça
ssh me@example.com 'some-command.sh'
Vous obtenez une session non interactive et ssh se ferme dès que la commande (ou le script, ou autre) est exécutée. Comment puis-je obtenir une session interactive et exécuter une commande que j'ai spécifiée à partir de ma machine locale. Par exemple, j'aimerais pouvoir ouvrir l'écran et redémarrer une session d'écran spécifique:
ssh me@example.com 'screen -r 12345'
mais cela n'est pas autorisé, renvoyant l'erreur "Doit être connecté à un terminal". ce qui, je présume, signifie essentiellement "doit appeler cette commande à partir d'un shell interactif".
Comme autre exemple, j'utilise une tonne de machines au travail qui me demandent souvent d'utiliser un compte partagé pour avoir le droit de faire certaines choses (ouais je sais: mauvaise idée mais ne me blâmez pas, je n'ai pas mis en place des choses qui façon), et ils ont généralement ksh comme shell par défaut. Je souhaite me connecter, basculer vers bash (ou zsh) et rechercher le .bash_profile (ou .zshrc) de mon propre compte. Ce serait facile si je pouvais établir une session ssh interactive et passer une commande à la machine distante pour l'exécuter lors de la connexion.
J'ai une solution très louable (et non testée) à l'esprit que je publierai, mais j'espère que quelqu'un connaît une meilleure façon.
MISE À JOUR: pour ceux qui ne l'ont pas réalisé, je ne prévois pas de faire tout cela à la main, donc me dire d'ouvrir une session interactive et de le faire à la main ne résout rien.
2ème MISE À JOUR: Pour tenter une fois de plus de clarifier: j'essaie d'exécuter des commandes (arbitraires) sur le serveur (spécifié par programme sur le client) mais j'ai ensuite une session interactive ouverte qui est affectée par tout ce qui est fait par ces commandes programmatiques.
echo "command" | ssh user@remote_host