GNU/Linux >> Tutoriels Linux >  >> Linux

L'exécution de la commande SSH se bloque, bien que le shell interactif fonctionne correctement

Nous avons corrigé cela en ajoutant -n (pour rediriger std depuis /dev/null) et -t (forcer l'allocation pseudo-tty)

Exemple :

ssh -t -n [email protected] command

Le problème était en effet mon script de connexion, bien que cela n'ait rien à voir avec la nécessité d'un terminal (je m'en doutais et j'ai testé avec le -t et -T choix). Le problème était que mon .bashrc exécutait un exec (dans ce cas à zsh - parce que notre système n'autorise pas chsh à zsh ).

La ligne incriminée :

test -f /usr/bin/zsh && exec /usr/bin/zsh

Résolu en vérifiant d'abord le shell interactif et en quittant si c'est le cas :

[ -z "$PS1" ] && return
test -f /usr/bin/zsh && exec /usr/bin/zsh

Donc, essentiellement, parce que le shell s'exécutait en zsh , ssh attendait que cela se termine - ce qui ne s'est jamais produit.

Je suis un peu confus pourquoi mon .bashrc était appelé du tout - je pensais que ce n'était que pour les shells interactifs, mais le but exact et l'ordre des différents scripts d'initialisation est quelque chose que je ne pense pas que j'apprendrai un jour.

J'espère que cela pourra être utile à d'autres qui ont une sorte de exec dans leurs scripts de démarrage.

BTW - les deux autres réponses étaient sur la bonne voie, donc je ne savais absolument pas si je devais "répondre" ou simplement commenter leurs réponses. Si répondre à ma propre question est moralement répréhensible sur stackoverflow, faites le moi savoir et je ferai pénitence. Merci aux autres répondeurs.


Linux
  1. Comment les arguments de la ligne de commande distante Ssh sont-ils analysés ?

  2. Le script shell se bloque sur la commande de messagerie ?

  3. Fonctions dans les variables shell ?

  4. Comment utiliser les fonctions du shell de ligne de commande sous Linux

  5. SSH - Comment inclure la commande -t dans le fichier ~/.ssh/config

Commande SSH

Commande source sous Linux

Interface de commandes

Commande source sur Linux expliquée

Comment exécuter une commande dans un script shell ?

séparé :commande introuvable