J'essaie d'automatiser plusieurs tâches courantes que je SSH sur un serveur distant. Pour cela, j'utilise PuTTY et son option "commande à distance" (Connexion> SSH) dans plusieurs sessions enregistrées. Ma commande à distance ressemble à ceci:
~/scripts/test; $SHELL -l
Le script exécuté diffère selon les sessions enregistrées et effectue différentes tâches. $SHELL -l
garde la session PuTTY active après l'exécution du script.
Tout cela fonctionne parfaitement pour la plupart des scripts que je lance. Cependant, j'en ai un qui utilise une boucle while pour exécuter une série de commandes jusqu'à ce qu'il se termine par Ctrl + C. Le script commence bien, mais le shell PuTTY ne reste pas actif une fois terminé. $SHELL -l
ne semble pas être en cours d'exécution.
Un exemple de script avec ce comportement est le suivant:
while true; do
echo "."
sleep 2
done
Ce qui suit fonctionne correctement, exécuté manuellement. Je vois le résultat attendu de la deuxième commande:
~/scripts/test; echo "done"
Cependant, la deuxième commande de la "commande à distance" de PuTTY ne s'exécute pas. En effet, si je change la commande à distance pour inclure un echo
, celle-ci ne sera pas affichée.
~/scripts/test; echo "done"; $SHELL -l
Je suppose donc que ma question est la suivante: pourquoi la deuxième commande de la liste n'est-elle pas exécutée par la commande distante, alors qu'elle est exécutée manuellement? Et, plus important encore, que puis-je faire à ce sujet?
Si c'est pertinent, je lance PuTTY sur Ubuntu 14.04.
ssh
(OpenSSH)? Cela devrait être installé par défaut sur Ubuntu. Ou si vous devez vraiment utiliser PuTTY, utilisezplink
, spécialement conçu pour l'automatisation.